循环遍历R中的xml_nodeset

时间:2015-11-20 04:10:49

标签: r xpath web-scraping

我是网络抓取和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;

的对象

你能给我的方向最有帮助。

1 个答案:

答案 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 ="")