我正试图从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">
正在影响某些事情,但我不知道如何绕过它。提前感谢任何提示。
答案 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: