我正在尝试使用 R 中 RCurl 包的 getURL 函数从 API 中抓取页面上的数据。我的问题是,当我使用 R 发出请求时,我无法复制在 Chrome 中打开 URL 时得到的响应. 本质上,当我在 Chrome 中打开 API 页面(下面的 url)时,它工作正常,但如果我在 R 中使用 getURL(或在 Chrome 中使用隐身模式)请求它,我会收到“500 Internal Server Error”响应,而不是漂亮我正在寻找的 JSON。
这是我在 [R] 中的(失败的)请求。
test2 <- fromJSON(getURL("http://www.bluenile.com/api/public/loose-diamond/diamond-details/panel?country=USA¤cy=USD&language=en-us&productSet=BN&sku=LD04077082", ssl.verifypeer = FALSE, useragent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.124 Safari/537.36"))
到目前为止我的研究 首先我查看了堆栈上的这个先前的问题并将我的用户代理添加到请求中(没有解决问题但可能仍然是必要的): ViralHeat API issues with getURL() command in RCurl package
接下来,我查看了这篇有用的帖子,它指导了我的基本原理: R Disparity between browser and GET / getURL
我对解决方案的想法 这不是我的专业领域,但我的猜测是该请求缺少完成请求所需的 cookie(因此它在我的浏览器中以隐身模式不起作用)。我比较了成功请求和不成功请求的请求和响应:
请求成功:
请求失败:
有人有想法么?我是否应该尝试使用RSelenium
MrFlick 在我发布的第二篇文章中建议的包。