从体育页面刮痧表 - AdBlock干扰

时间:2017-03-20 18:21:18

标签: r xml xpath web-scraping

我正试图从http://www.sports-reference.com/cbb/schools/duke/2010.html获取第6个(或“高级”)表格。

使用htmltab或XML我已经能够使用整数引用(即第一个表为1,第二个表为2)或XPath来删除表1到表3。但是,我不能使用相同的方法刮掉表4,5或6。

library(htmltab)
url <- "http://www.sports-reference.com/cbb/schools/duke/2010.html"
duketable1 <- htmltab(doc = url, which = 1) #Using number
duketable1 <- htmltab(doc = url, which = "//*[@id='all_roster']") #Using XPath

不能使用相同的框架刮掉表6(或4和5)。

duketable6 <- htmltab(doc = url, which = 6)
duketable6 <- htmltab(doc = url, which = "//*[@id='all_advanced']")

与XML相同(仅读取前三个表)

library(XML)
url <- "http://www.sports-reference.com/cbb/schools/duke/2010.html"
tables <- readHTMLTable(url)
names(tables)

我最好的猜测是<div class="adblock">正在影响某些事情,但我不知道如何绕过它。提前感谢任何提示。

1 个答案:

答案 0 :(得分:3)

如果你看一下源代码(在chrome中,即view-source:http://www.sports-reference.com/cbb/schools/duke/2010.html) 您会看到后面的表格是通过<!--

进行评论的

只需替换此评论即可阅读。使用rvest

require(httr)
require(rvest)

doc <- GET("http://www.sports-reference.com/cbb/schools/duke/2010.html")
content(doc, "text") %>% 
  gsub(pattern = "<!--\n", "", ., fixed = TRUE) %>% 
  read_html %>% 
  html_nodes(".table_outer_container table") %>% 
  html_table

追加%>% str(max.level = 1)结果

List of 6
 $ :'data.frame':   13 obs. of  5 variables:
 $ :'data.frame':   4 obs. of  25 variables:
 $ :'data.frame':   13 obs. of  23 variables:
 $ :'data.frame':   13 obs. of  25 variables:
 $ :'data.frame':   13 obs. of  23 variables:
 $ :'data.frame':   13 obs. of  27 variables: