在R中使用xpath刮取数据表

在R中使用xpath刮取数据表,r,xpath,web-scraping,R,Xpath,Web Scraping,我对R相当熟悉,但对网页抓取没有经验。我环顾四周,似乎无法找出我的网络抓取“失败”的原因。以下是我的代码,包括我要抓取的URL(具体为ngs数据表): 我知道这不是一大堆代码,我也尝试过多个不同的XPath。我知道我最终需要更多的代码来更具体地处理网页抓取,但我想即使是上面的代码至少也会为我指明正确的方向?任何帮助都将不胜感激。谢谢大家! 该表的内容是动态生成的:通过从浏览器保存页面(或者,使用您的代码,write_html(网页,'test.html'))来检查它,然后打开保存的文件。因此,您

我对R相当熟悉,但对网页抓取没有经验。我环顾四周,似乎无法找出我的网络抓取“失败”的原因。以下是我的代码,包括我要抓取的URL(具体为ngs数据表):


我知道这不是一大堆代码,我也尝试过多个不同的XPath。我知道我最终需要更多的代码来更具体地处理网页抓取,但我想即使是上面的代码至少也会为我指明正确的方向?任何帮助都将不胜感激。谢谢大家!

该表的内容是动态生成的:通过从浏览器保存页面(或者,使用您的代码,
write_html(网页,'test.html')
)来检查它,然后打开保存的文件。因此,您可能无法使用
rvest
捕获它。类似于RSelenium的浏览器模拟包将解决这个问题。

数据存储为JSON。下面是下载和处理该文件的方法

library(httr)

#URL for week 6 data
url <- "https://nextgenstats.nfl.com/api/statboard/rushing?season=2020&seasonType=REG&week=6"

#create a user agent 
ua <- "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36"

#download the information
content <-httr::GET(url, verbose() , user_agent(ua), add_headers(Referer =  "https://nextgenstats.nfl.com/stats/rushing/2020/REG/1"))
answer <-jsonlite::fromJSON(content(content, as = "text") ,flatten = TRUE)
answer$stats
库(httr)
#第6周数据的URL

这个url工作得很好!出于好奇,您是如何知道它是存储为JSON的呢?像这样的许多页面都是使用javascript动态创建的,数据存储为外部表。这是一个使用浏览器开发工具的“网络”选项卡并查看“XHR”文件的问题。
{xml_nodeset (0)}
library(httr)

#URL for week 6 data
url <- "https://nextgenstats.nfl.com/api/statboard/rushing?season=2020&seasonType=REG&week=6"

#create a user agent 
ua <- "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36"

#download the information
content <-httr::GET(url, verbose() , user_agent(ua), add_headers(Referer =  "https://nextgenstats.nfl.com/stats/rushing/2020/REG/1"))
answer <-jsonlite::fromJSON(content(content, as = "text") ,flatten = TRUE)
answer$stats