R 网络抓取包无法读取 url 的所有表
R web scraping packages failing to read in all tables of url
我正在尝试从以下 link 中抓取一些表格:
'https://www.pro-football-reference.com/boxscores/201209050nyg.htm'
从我尝试多次 methods/packages 可以看出,我认为 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 到 运行 才能加载。当您使用当前方法时,浏览器中显示的那些未加载。可能的解决方案是:
- 使用像 RSelenium 这样的方法,它允许 javascript 到 运行
- 检查页面 HTML 以查看信息是否存储在别处并且可以从那里获取。有时信息是从
script
标签中检索的,例如,它存储为 json/javascript object
- 刷新页面时监控网络流量(F12 打开开发工具,然后打开网络选项卡),看看您是否可以找到从中加载附加内容的来源。您可能会找到可以使用的其他端点)。
查看该页面,似乎至少有两个缺失的 table(可能全部)实际上存储在返回的 html 的评论中,与具有 [=38= 的 div 相关联] placeholder
;并且您需要删除注释标记,或者使用允许解析注释的方法。据推测,当javascript 运行s这些评论被转换为显示内容。
这是来自 html 的示例:
看看@alistaire 的 ,一种方法如下(如上图所示为单个示例 table)
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()
我正在尝试从以下 link 中抓取一些表格: 'https://www.pro-football-reference.com/boxscores/201209050nyg.htm' 从我尝试多次 methods/packages 可以看出,我认为 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 到 运行 才能加载。当您使用当前方法时,浏览器中显示的那些未加载。可能的解决方案是:
- 使用像 RSelenium 这样的方法,它允许 javascript 到 运行
- 检查页面 HTML 以查看信息是否存储在别处并且可以从那里获取。有时信息是从
script
标签中检索的,例如,它存储为 json/javascript object - 刷新页面时监控网络流量(F12 打开开发工具,然后打开网络选项卡),看看您是否可以找到从中加载附加内容的来源。您可能会找到可以使用的其他端点)。
查看该页面,似乎至少有两个缺失的 table(可能全部)实际上存储在返回的 html 的评论中,与具有 [=38= 的 div 相关联] placeholder
;并且您需要删除注释标记,或者使用允许解析注释的方法。据推测,当javascript 运行s这些评论被转换为显示内容。
这是来自 html 的示例:
看看@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()