使用XML进行Web抓取,将td节点转换为val

时间:2012-04-04 20:31:35

标签: xml r web-scraping

我想抓取google搜索点击次数:

require(XML)

input <- "projektgebiet" 
url <- paste("https://www.google.at/search?q=",
             input,
             "&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:de:official&client=firefox-a",
             sep = "")

CAINFO = paste(system.file(package="RCurl"), "/CurlSSL/ca-bundle.crt", sep = "")
script <- getURL(url, followlocation = TRUE, cainfo = CAINFO)
doc <- htmlParse(script)

xmlValue(getNodeSet(doc, "//td")[[6]])

我很接近 - 唯一的问题是我没有掌握如何单独解决节点中的两个值 - 我实际上只是想要数字..(在上面的例子中,两个值是连接的)

我还想知道一种如何避免索引[[6]]的方法,但不知道是否可以通过任何其他特性来寻址节点。

非常感谢任何帮助或指示!

ps:当然我可以使用正则表达式 - 但我认为这不是最优雅的方式..

1 个答案:

答案 0 :(得分:1)

您可以避免[[6]] 通过注意到其中一个div元素具有id属性。 以下内容分别返回两个子节点的内容, 没有连接它们。

xpathSApply(doc, "//div[@id='subform_ctrl']/*", xmlValue)
# [1] "Erweiterte Suche"            "Ungefähr 245.000 Ergebnisse"