【问题标题】:web scraping in R using xpathSApply使用 xpathSApply 在 R 中进行网页抓取
【发布时间】:2014-07-01 13:20:23
【问题描述】:

我已阅读有关 R 中网络抓取的所有先前问题,但无法解决我的问题。我想获取图片的名称(请参阅下面的 URL)和每张图片的详细信息。 我意识到必须使用xpathSApply 和一个循环来获取每张照片的信息。但是现在我即使从http://www.wikiart.org/en/search/monet/11取一个名字也有问题

    library(XML)
    url = "http://www.wikiart.org/en/search/monet/1#supersized-search-211804"
    doc = htmlTreeParse(url, useInternalNodes=T)
    pictureName = xpathSApply(doc,"//a[contains(@href, 'title')]",xmlValue)
    pictureName
    ## list()

为什么给我list()

【问题讨论】:

  • 我知道这是另一回事,但要了解它的工作原理,您可能应该知道 xpath 的工作原理。这有点像解析 XML 的正则表达式。

标签: r web web-scraping


【解决方案1】:

试试这个:

pictureNames <- xpathSApply(doc,"//a[@class='big rimage']/@title", unname)

给予:

> head(pictureNames)
[1] "Camille and Jean Monet in the Garden at Argenteuil - Claude Monet"    
[2] "Camille Monet at the Window, Argentuile - Claude Monet"               
[3] "Camille Monet in the Garden - Claude Monet"                           
[4] "Camille Monet in the Garden at the House in Argenteuil - Claude Monet"
[5] "Camille Monet on a Garden Bench - Claude Monet"                       
[6] "Camille Monet On Her Deathbed - Claude Monet"         

【讨论】:

  • 谢谢!有用!也许您知道要阅读什么并了解我需要什么:制作循环并收集所有带有详细信息的名称?
  • 请指教,如何指定我想要获得的数据。尝试打印脚本以与您的类比来获取 CompletionDate。但结果为 NULL:CompletionDate wikiart.org/en/claude-monet/…
  • 试试这个:xpathSApply(doc, "//span[@itemprop='dateCreated']", xmlValue)
  • 酷!你怎么做呢?我得到了主要原则)但是如何从这里获取 Material: canvas view-source:wikiart.org/en/claude-monet/…
  • 试试这个:Material &lt;- grep("Material:", xpathSApply(doc, "//p[@class='pt10 b0']", xmlValue), value = TRUE); strsplit(Material, "[\n\r\t]+")[[1]][3]
猜你喜欢
  • 2023-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-28
相关资源
最近更新 更多