使用getURL刮取https网站

时间:2013-10-19 12:36:58

标签: r

我有一个很好的小包来抓取Google Ngram数据,但我发现他们已经切换到SSL而我的包已经坏了。如果我从readLines切换到getURL可以获得某些方式,但页面中包含的某些脚本将丢失。我是否需要对用户代理或其他东西感兴趣?

这是我到目前为止所尝试的(非常基本的):

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

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

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

任何建议都将不胜感激!

1 个答案:

答案 0 :(得分:1)

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

如果您使用getURL()下载此新网址,请使用新参数,然后您提及的javascript会出现在结果中。

另一种解决方案可能是尝试通过Google BigQuery访问数据,如本SO问题所述:

Google N-Gram Web API