html_nodes 给予 {xml_nodeset (0)}

html_nodes giving {xml_nodeset (0)}

我正在尝试从 www.speedtest.net/awards/ca/ontario 中抓取数据,当我沿着某些路径前进时,标准功能似乎可以工作,但其他路径却不起作用。我不知道为什么。

例如,如果我进入 header 并寻找它有效的脚本

library(rvest)
URL<-read_html("http://www.speedtest.net/awards/ca/ontario")
test1<-html_nodes(URL,xpath='/html/head/script[1]')
test1

这将 return {xml_nodeset (1)} 符合预期。

但是如果我进入 body 并尝试类似的东西

test2<-html_nodes(URL,xpath='/html/body/script[1]')
test2

我得到{xml_nodeset (0)}。

为什么我无法到达 body 下的节点?[​​=15=]

我正在尝试使用下面的代码,但我已将我的问题追溯到上述问题。

real<-html_nodes(URL,xpath='/html/body/div[1]/div[3]/div/div[2]/div/div[3]/div[2]/table')
real

有什么想法吗?

尝试这个,可能不完整,但它应该为回答您的问题提供一个良好的开端:

library(rvest)
URL<-read_html("http://www.speedtest.net/awards/ca/ontario")
#find the table rows in the page
table<-html_nodes(URL, "tbody tr")

#pull info from the table rows
num<-html_text(html_nodes(table, "td.u-align-right"))
provider<-html_text(html_nodes(table, "td.cell-provider-name"))

#final data.frame with a table of the results
df<-data.frame(provider, matrix(num, ncol=3, byrow=TRUE))

我发现使用 rvest 搜索 css 标签比 xpath 更容易。

谢谢。使用 css 标签搜索,我能够想出这个非常有用的方法来获得我想要的 table(右下角的那个)。

library(rvest)
URL<-read_html("http://www.speedtest.net/awards/ca/ontario")
table<-html_nodes(URL, "table")
table<-html_table(table)[[2]]