4

我有一个不错的小包来抓取Google Ngram数据,但我发现他们已经切换到 SSL 并且我的包坏了。如果我从那里切换readLinesgetURL某些方式,但页面中包含的一些脚本丢失了。我需要对用户代理或其他东西感兴趣吗?

这是我迄今为止尝试过的(非常基本的):

library(RCurl)
myurl <- "https://books.google.com/ngrams/graph?content=hacker&year_start=1950&year_end=2000"
getURL(myurl)

将结果与在浏览器中输入 url 后查看源进行比较表明,返回给 R 的结果中缺少关键内容。在浏览器中,源包含如下内容:

<script type="text/javascript">
 var data = [{"ngram": "hacker", "type": "NGRAM", "timeseries": [9.4930387994907051e-09,
  1.1685493106483591e-08, 1.0784501440023556e-08, 1.0108472218003532e-08,

等等

任何建议将不胜感激!

4

1 回答 1

1

抱歉,不是直接解决方案,但似乎不是用户代理问题。当您在浏览器中打开您的 URL 时,您可以看到有一个重定向,它在地址的末尾添加了一个参数 : direct_url=t1%3B%2Chacker%3B%2Cc0

如果您使用getURL()下载此新 URL 并使用新参数完成,那么您提到的 javascript 将出现在结果中。

另一个解决方案可能是尝试通过 Google BigQuery 访问数据,如此 SO question 中提到的:

谷歌 N-Gram 网络 API

于 2013-10-19T14:12:48.357 回答