使用rvest和tidyverse抓取网页时出错

使用rvest和tidyverse抓取网页时出错,r,tidyverse,rvest,R,Tidyverse,Rvest,我正试图通过CBS网站搜集梦幻足球的预测,我遇到了一个问题。链接 我读过解决方案,但它们对我不起作用 我尝试了下面的代码,它在去年有效,但今年出现了一个错误。我假设哥伦比亚广播公司对他们的网站做了一些改变,这会产生影响 qbs <- read_html(paste0("https://www.cbssports.com/fantasy/football/stats/QB/2019/1/projections/ppr")) %>% html_nodes('table') %>

我正试图通过CBS网站搜集梦幻足球的预测,我遇到了一个问题。链接

我读过解决方案,但它们对我不起作用

我尝试了下面的代码,它在去年有效,但今年出现了一个错误。我假设哥伦比亚广播公司对他们的网站做了一些改变,这会产生影响

qbs <- read_html(paste0("https://www.cbssports.com/fantasy/football/stats/QB/2019/1/projections/ppr")) %>%
  html_nodes('table') %>%
  html_table(fill = TRUE)

出现此问题的原因是该表有两个标题行

第一个标题行是一个分组标题(“PASSING”、“RUSHING”、“MISC”),它没有它所表示的数据那么多的列。第二个标题行未分组,其长度(按列)与数据相同。如果删除第一个标题行并保留第二个标题行,它将进行解析

page <- read_html("https://www.cbssports.com/fantasy/football/stats/QB/2019/1/projections/ppr")

table <- page %>% 
    html_nodes('table') %>% 
    as.character()

grouped_header <- page %>% 
    html_nodes('.TableBase-headGroupTr') %>% 
    as.character()

table %>% 
    gsub(grouped_header, "", ., perl=T) %>% 
    read_html() %>% 
    html_table()
page%
as.character()
分组头%
html_节点('.TableBase headGroupTr')%>%
as.character()
表%>%
gsub(分组的_头,“,,perl=T)%>%
读取html()%>%
html_表()

谢谢!您是如何认识到这是基于错误的问题的?我将第一步
read_html()
读取的html转储到
temp.html
文件中,并在浏览器中打开它查看它并检查源代码。我熟悉HTML和整洁数据的原理。我有一种预感,那张桌子有一些“额外的”东西,导致了一个问题。通过使用Chrome开发者工具查看源代码,我找到了
.TableBase headGroupTr
。感谢您的解释!再次感谢。
page <- read_html("https://www.cbssports.com/fantasy/football/stats/QB/2019/1/projections/ppr")

table <- page %>% 
    html_nodes('table') %>% 
    as.character()

grouped_header <- page %>% 
    html_nodes('.TableBase-headGroupTr') %>% 
    as.character()

table %>% 
    gsub(grouped_header, "", ., perl=T) %>% 
    read_html() %>% 
    html_table()