在R中有没有办法简单地搜索谷歌的东西,然后返回结果的数量?我在谷歌的一些服务(RGoogleDocs,RGoogleData,RGoogleMaps,googleVis)周围看过很多R套餐,但我无法在任何地方找到这个功能。
答案 0 :(得分:9)
这是我使用的,但它基于最终逐步淘汰的API协议。它也是速率有限的,我相信每天100次搜索。在下面的功能中,服务是“web”;您需要从http://code.google.com/apis/loader/signup.html获取密钥(任何网址都可以使用)。
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
。
正如我所说,这是基于一种可能在某一天不合时宜的协议。 Per Dirk的回答是,有一种替代方法可以使用您可以使用的自定义搜索引擎,但它也是速率有限的(如果您想要这种方法的功能,您可以在noah_at_noahhl.com ping我)。
最终的,而不是速率限制的方式只是使用RCurl从谷歌获取一个页面,但解析起来相当混乱,并且需要欺骗用户代理以绕过谷歌试图阻止人们这样做。 (我也可以分享这段代码,但只要谷歌调整任何HTML,它就会被破坏。)
答案 1 :(得分:1)
您可能需要从Google Custom Search API文档开始,然后查看您需要学习多少JSON才能获得它:)
应该有足够的R基础设施来实现目标。