R网络抓取包无法读取所有url表

标签 r web-scraping rvest rcurl

我正在尝试从以下链接中抓取一些表格: 'https://www.pro-football-reference.com/boxscores/201209050nyg.htm ' 从我尝试的一些方法/包中可以看出,我认为 R 无法读取整个 url。以下是我所做的一些尝试:

a <- getURL(url)
tabs <- readHTMLTable(a, stringsAsFactors = T)

x <- read_html(url)
y <- html_nodes(x,xpath= '//*[@id="div_home_snap_counts"]')

我已经用这两种方法成功读取了前两个表,但之后无论我使用 xpath 还是 css,我都无法读取任何其他表。有谁知道为什么我无法阅读后面的表格?

最佳答案

如果您使用 Chrome 等浏览器,您可以进入设置并禁用 JavaScript。然后您会看到只有几张 table 。其余的需要 javascript 运行才能加载。当您使用当前方法时,如浏览器中显示的那样,这些内容不会被加载。可能的解决方案是:

  1. 使用 RSelenium 等允许 javascript 运行的方法
  2. 检查页面的 HTML 以查看信息是否存储在其他位置并且可以从那里获取。有时,信息是从 script 标记中检索的,例如,信息存储为 json/javascript 对象
  3. 刷新页面时监视网络流量(F12 打开开发工具,然后打开“网络”选项卡),并查看是否可以找到加载附加内容的源。您可能会找到可以使用的其他端点)。

查看该页面,似乎至少有两个缺失的表(可能是全部)实际上存储在返回的 html 中的注释中,与具有类 placeholder 的 div 相关联;并且您需要删除注释标记,或者使用允许解析注释的方法。据推测,当 javascript 运行时,这些注释会转换为显示的内容。

以下是 html 中的示例:

看着这个answer作者:@alistaire,一种方法如下(如上图所示为单个示例表)

library(rvest)

h <- read_html('https://www.pro-football-reference.com/boxscores/201209050nyg.htm')

df <- h %>% html_nodes(xpath = '//comment()') %>%   
  html_text() %>%  
  paste(collapse = '') %>%   
  read_html() %>%  
  html_node('#game_info') %>%   
  html_table() 

关于R网络抓取包无法读取所有url表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57022738/

相关文章:

javascript - 使用 Scrapy - JS 制作蜘蛛

html - 如何使用 R 中的 rvest 包提取 <tag> 之外的文本

RSelenium:抓取加载缓慢的动态加载页面

r - 如何在 R 中为数据表中的每一行创建子类别

r - 具有大量点的 dist 函数

r - 使用三点参数时的 list(...) 与 as.list(...)

r - XTS:按交易日拆分 FX 日内柱数据

javascript - 使用 Puppeteer 单击后检测 POST 响应到达

html - 使用 R 提取 html 文本 - 无法访问某些节点

web-scraping - 抓取错误 : 'NotSupported: Unsupported URL scheme ' ': no handler available for that scheme'