在 R 中有没有一种方法可以简单地在 google 上搜索某些东西,然后返回结果的数量?我在 google 的某些服务(RGoogleDocs、RGoogleData、RGoogleMaps、googleVis)周围看到了很多 R 包,但我在任何地方都找不到这个功能。
最佳答案
这是我使用的,但它基于最终将被淘汰的 API 协议(protocol)。它也有速率限制,我相信每天有 100 次搜索。在下面的函数中,服务是“web”;您需要从 http://code.google.com/apis/loader/signup.html 获取 key (任何 URL 都可以)。
GetGoogleResults <- function(keyword, service, key) {
library(RCurl)
library(rjson)
base_url <- "http://ajax.googleapis.com/ajax/services/search/"
keyword <- gsub(" ", "+", keyword)
query <- paste(base_url, service, "?v=1.0&q=", keyword, sep="")
if(!is.null(key))
query <- paste(query, "&key=", key, sep="")
query <- paste(query, "&start=", 0, sep="")
results <- fromJSON(getURL(query))
return(results)
}
然后,你可以做类似的事情
google <- GetGoogleResults("searchTerm", "web", yourkey)
str(google)
会告诉你结果的结构。如果只想要结果数,可以使用google$responseData$cursor$estimatedResultCount
.正如我所说,这是基于某天可能会过时的协议(protocol)。根据 Dirk 的回答,您可以使用另一种使用自定义搜索引擎的替代方法,但它也有速率限制(如果您想要此方法的功能,您可以在 noah_at_noahhl.com 上联系我)。
最后一种方法是使用 RCurl 从 google 获取页面,但没有速率限制,但解析起来非常困惑,并且需要欺骗用户代理来绕过 Google 阻止人们这样做的尝试。 (我也可以分享这段代码,但只要谷歌调整他们的任何 HTML,它就会被破坏)。
关于R:在谷歌搜索一个字符串并返回点击数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5187685/