【问题标题】:Scraping Table From Sports Page - AdBlock Interfering从体育页面抓取表格 - AdBlock 干扰
【发布时间】:2017-08-12 04:16:20
【问题描述】:

我正在尝试从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)

我最好的猜测是&lt;div class="adblock"&gt; 正在影响某些东西,但我不知道如何解决它。提前感谢您的任何提示。

【问题讨论】:

    标签: r xml xpath web-scraping


    【解决方案1】:

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

    评论的

    只需替换此评论,您就可以阅读它们。使用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
    

    附加%&gt;% 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:
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-27
      • 1970-01-01
      • 2014-05-21
      • 2021-06-25
      • 2019-10-16
      • 1970-01-01
      相关资源
      最近更新 更多