我是网络抓取和R的新手。我一直在尝试构建一个函数,该函数将从具有特定名称的每个节点中抓取多个项目。在我寻找答案时,我遇到了https://github.com/hadley/rvest/issues/12,这给了我一个良好的开端。
这是我的问题。我用:
nodes <- "http://pyvideo.org/category/50/pycon-us-2014" %>%
read_html %>%
html_nodes("div.col-md-6")
给我一个xml_nodeset。如果我使用:
html_node(nodes[1],xpath = "div[1]//a") %>% html_text()
我得到了我要找的信息。所以我需要一种方法来遍历我的sml_nodeset并应用上面的函数,但是我没有成功。
我最初尝试使用
column <- function(x) nodes %>% html_node(xpath = "div[1]//a") %>% html_text()
像顶部的链接一样。但我得到一个错误&#34; eval中的错误(expr,envir,enclos):没有匹配&#34;我也尝试过使用xpathApply,但它说
&#34; UseMethod错误(&#34; xpathApply&#34;):
没有适用于&#39; xpathApply&#39;的方法应用于类&#34; xml_nodeset&#34;&#34; 的对象
你能给我的方向最有帮助。
答案 0 :(得分:0)
它会为您提供每个视频的所有标题和链接:
library(RCurl)
library(XML)
nodes <- "http://pyvideo.org/category/50/pycon-us-2014"
doc <- htmlParse(nodes)
titles <- xpathSApply(doc,"//div[@class='col-md-6']//strong/a", xmlValue)
links <- paste("http://pyvideo.org", xpathSApply(doc,"//div[@class='col-md-6']//strong//@href"), sep ="")