【问题标题】:scrape url from google search using r httr使用 r httr 从谷歌搜索中抓取 url
【发布时间】:2014-01-02 17:45:30
【问题描述】:

我想从 Google 网络搜索中获取 URL,如下所示:

library(httr)
search.term="httr+package+daterange:%3A2456294-2456659"
url.name=paste0("https://www.google.com/search?q=",search.term)
url.get=GET(url.name)
url.content=content(url.get)

然后尝试从结果中获取链接失败:

links <- xpathApply(url.content, "//h3//a[@href]", function(x) xmlAttrs(x)[[1]])
Error in UseMethod("xpathApply") : 
no applicable method for 'xpathApply' applied to an object of class "XMLDocumentContent"

从 url.content 中获取链接的最佳方法是什么?

【问题讨论】:

    标签: xml r rcurl httr


    【解决方案1】:

    尝试content()as="text" 以防止它返回类XMLDocumentContent 的对象:

    library(httr)
    search.term="httr+package+daterange:%3A2456294-2456659"
    url.name=paste0("https://www.google.com/search?q=",search.term)
    url.get=GET(url.name)
    url.content=content(url.get, as="text")
    links <- xpathSApply(htmlParse(url.content), "//a/@href")
    head(links,3)
    # href 
    # "https://www.google.com/webhp?tab=ww" 
    # href 
    # "https://www.google.com/search?q=httr%2Bpackage%2Bdaterange::2456294-2456659&um=1&ie=UTF-8&hl=en&tbm=isch&source=og&sa=N&tab=wi" 
    # href 
    # "https://maps.google.com/maps?q=httr%2Bpackage%2Bdaterange::2456294-2456659&um=1&ie=UTF-8&hl=en&sa=N&tab=wl" 
    

    更新:

    正如杰克在评论中指出的那样,这也有效:

    url.get=GET(url.name)
    links <- xpathSApply(htmlParse(url.get), "//a/@href")
    

    【讨论】:

    • 你也可以htmlParse(url.get) 和完全跳过content
    • 真的,@JakeBurkhead。 :)
    • 你应该可以做到xpathSApply(content(url.get), "//a/@href")。通常我还会添加stop_for_status(url.get),这样您就可以立即知道 HTTP 请求是否失败(而不是 html 解析失败)
    • 它不能开箱即用的原因是 XML 包中的类存在一些问题,而我从 content() 返回的内容。我在github.com/hadley/httr/issues/66 提交了一个问题
    • @lukeA - 谢谢,它有效! hadley - xpathSApply(内容(url.get),“//a/@href”)产生:UseMethod(“xpathApply”)中的错误:没有适用于“XMLDocumentContent”类对象的“xpathApply”方法
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 2012-08-19
    • 2019-12-09
    • 1970-01-01
    相关资源
    最近更新 更多