我尝试向API发送请求,使用RCurl库。
我的代码:
start = "2018-07-30"
end = "2018-08-15"
api_request <- paste("https://api-metrika.yandex.ru/stat/v1/data.csv?id=34904255&date1=",
start,
"&date2=",
end,
"&dimensions=ym:s:searchEngine&metrics=ym:s:visits&dimensions=ym:s:<attribution>SearchPhrase&filters=ym:s:<attribution>SearchPhrase!~'some|phrases|here'&limit=100000&oauth_token=OAuth_token_here", sep="")
s <- getURL(api_request)
并且每次尝试执行此操作时,如果我使用getUrlContent,则会收到响应“错误400”或“错误请求”。当我只是在浏览器中打开此网址时,它便可以正常工作。 我仍然找不到这个问题的解决方案,因此,如果有人对此有所了解-请帮助我,好心的人=)
答案 0 :(得分:0)
如果URL正确,可以使用多种方法。首先,您可以将以下参数添加到getURL
函数中。将参数followlocation
设置为TRUE允许遵循服务器作为HTTP头的一部分返回的任何“ Location:”头。处理是递归的,PHP将遵循任何“ Location:”标头。
> s <- getURL(url1, .opts=curlOptions(followlocation = TRUE))
如果此方法无效,则可以通过调用XML
方法而不是htmlParse
来使用getURL
包
> library(XML)
> s <- htmlParse(api_request)
另一种方法是使用httr
包并调用GET
函数:
> library(httr)
> s <- GET(api_request)