使用 RVEST 从体育参考资料中抓取表格

问题描述 投票:0回答:1

我正试图从这个网页上抓取各种表格: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")

当我尝试从该页面提取任何其他表格时,这似乎是一个问题。我唯一能得到的两张表是前两张(上图)。我不知道我哪里出错了。

r web-scraping rvest
1个回答
1
投票

我已经解决了。数据都存储为评论,我认为这是我的问题。对于任何感兴趣或有类似问题的人,这是我提取表格的方式:

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()
© www.soinside.com 2019 - 2024. All rights reserved.