我正试图从这个网页上抓取各种表格:https://www.pro-football-reference.com/years/2020/
在检查页面元素时,我发现使用以下代码很容易获得前两个表:
### packages
library(tidyverse)
library(rvest)
### Scrape offense
url_off <- read_html("https://www.pro-football-reference.com/years/2020/")
## AFC Standings
url_off %>%
html_table(fill = TRUE) %>%
.[1] %>%
as.data.frame()
## NFC Standings
url_off %>%
html_table(fill = TRUE) %>%
.[2] %>%
as.data.frame()
我被卡住的地方是该页面上的所有其他表格。
比如进攻表,我可以看到它在页面的哪个位置:
我已经尝试了几种提取它的方法,但没有任何运气。例如:
url_off %>%
html_nodes(".table_outer_container") %>%
html_nodes("#team_stats")
url_off %>%
html_nodes(".table_wrapper") %>%
html_nodes("#team_stats")
当我尝试从该页面提取任何其他表格时,这似乎是一个问题。我唯一能得到的两张表是前两张(上图)。我不知道我哪里出错了。
我已经解决了。数据都存储为评论,我认为这是我的问题。对于任何感兴趣或有类似问题的人,这是我提取表格的方式:
url_off %>%
html_nodes('#all_team_stats') %>%
html_nodes(xpath = 'comment()') %>%
html_text() %>%
read_html() %>%
html_node('table') %>%
html_table()
url_off %>%
html_nodes('#all_passing') %>%
html_nodes(xpath = 'comment()') %>%
html_text() %>%
read_html() %>%
html_node('table') %>%
html_table()