R.RCurl 400错误请求

时间:2018-08-16 08:13:40

标签: r rcurl geturl

我尝试向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”或“错误请求”。当我只是在浏览器中打开此网址时,它便可以正常工作。 我仍然找不到这个问题的解决方案,因此,如果有人对此有所了解-请帮助我,好心的人=)

1 个答案:

答案 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)