【问题标题】:Getting error scraping web page with rvest and tidyverse使用 rvest 和 tidyverse 获取错误抓取网页
【发布时间】:2020-01-10 04:08:18
【问题描述】:

我正在尝试通过 CBS 网站获取梦幻足球预测,但遇到了问题。链接here

我已经阅读了here 的解决方案,但它们对我不起作用

我已经尝试了以下代码,该代码去年有效,但今年出现错误。我假设 CBS 对他们的网站进行了一些更改,这会产生影响。

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

这是我收到的错误:

Error in if (length(p) > 1 & maxp * n != sum(unlist(nrows)) & maxp * n !=  : 
  missing value where TRUE/FALSE needed

【问题讨论】:

    标签: r tidyverse rvest


    【解决方案1】:

    问题出现是因为表格有两个标题行。

    第一个标题行是一个分组标题(“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()
    

    【讨论】:

    • 谢谢!您是如何意识到这是基于错误的问题?
    • 我将第一个read_html() 步骤读取的html 转储到temp.html 文件并在浏览器中打开它以查看它并检查源代码。我熟悉 HTML 和整洁数据的原则。我有一种预感,桌子上有一些“额外”的东西会导致问题。我通过使用 Chrome 开发者工具检查源代码找到了.TableBase-headGroupTr
    • 欣赏解释!再次感谢。
    猜你喜欢
    • 1970-01-01
    • 2020-07-18
    • 2019-02-17
    • 1970-01-01
    • 2018-12-01
    • 1970-01-01
    • 2015-09-06
    • 1970-01-01
    相关资源
    最近更新 更多