【问题标题】:looping over xml_nodeset in R在R中循环xml_nodeset
【发布时间】:2015-11-21 20:58:35
【问题描述】:

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

就像顶部的链接一样。但是我收到一个错误“eval 中的错误(expr,envir,enclos):没有匹配项”我也尝试过使用 xpathApply,但它说 “使用方法中的错误(“xpathApply”): 没有适用于“xml_nodeset”类对象的“xpathApply”方法

你能给我的任何方向都会很有帮助。

【问题讨论】:

    标签: r xpath web-scraping


    【解决方案1】:

    它将为您提供每个视频的所有标题和链接:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-26
      • 1970-01-01
      • 1970-01-01
      • 2016-03-18
      • 1970-01-01
      • 2020-08-29
      • 2016-01-21
      • 2016-03-17
      相关资源
      最近更新 更多