在R中调用RESTAPI

在R中调用RESTAPI,r,rest,R,Rest,我最近发现了dataforseo api,并尝试通过R调用它 library(httr) username <- 'mygmailadress@gmail.com' password <- 'mypassword' dataforseo_api <- POST('https://api.dataforseo.com/v2/op_tasks_post/$data', authenticate(username,password),

我最近发现了dataforseo api,并尝试通过R调用它

library(httr)

username <- 'mygmailadress@gmail.com'
password <- 'mypassword'

dataforseo_api <- POST('https://api.dataforseo.com/v2/op_tasks_post/$data', 
                authenticate(username,password), 
                body = list(grant_type = 'client_credentials'),
                type = "basic",
                verbose()
               )
库(httr)

用户名看起来您未正确配置
config
。我在代码中没有看到
config=
正文
编码也不正确

另外,在中,我没有看到任何关于
grant\u type
的信息。看起来应该有一系列任务,例如:

   {882394209:  {'site': 'ranksonic.com', 'crawl_max_pages': 10}}
答复:

好的,首先我们需要
set\u config
config=

username <- 'Hack-R@stackoverflow.com' # fake email
password <- 'vxnyM9s7FAKESeIO' # fake password

set_config(authenticate(username,password), override = TRUE)

GET("https://api.dataforseo.com/v2/cmn_se")
这是一回事。此外,要发布数据,他们需要您将其指定为
json
,例如
encode=“json”
。从他们的文档中:

所有POST数据应以JSON格式(UTF-8编码)发送。这个 关键字通过传递任务数组的POST方法发送。数据应该 必须在此POST数组的数据字段中指定。我们建议 一次最多发送100个任务

进一步:

当任务数组发送到时,使用POST方法完成任务设置 数据字段。每个数组元素都有以下内容 结构:

然后列出2个必填字段和许多可选字段

另外请注意,您可以使用
reset\u config()
after作为更好的练习。如果你打算经常运行它,共享它,或者使用一台以上的计算机,我还建议你把你的凭证放在环境变量中,而不是放在脚本中,以保证安全性和易用性

最后一点建议是,您可能只想利用他们发布的Python客户端库和大量示例编译。由于每一个新的API请求都是在没有他们支持的情况下在R中首创的,所以用Python进行数据收集可能会有回报


这是一个有趣的API。如果你转到了开放的数据栈交换,你应该考虑与那个社区共享它。

@雷米乐意帮忙:
{'results_count': 1, 'results_time': '0.0629 sec.', 'results': {'2308949': {'post_id': 2308949, 'post_site': 'ranksonic.com',
 'task_id': 882394209, 'status': 'ok'}}, 'status': 'ok'}
username <- 'Hack-R@stackoverflow.com' # fake email
password <- 'vxnyM9s7FAKESeIO' # fake password

set_config(authenticate(username,password), override = TRUE)

GET("https://api.dataforseo.com/v2/cmn_se")
Response [https://api.dataforseo.com/v2/cmn_se]
  Date: 2018-07-08 16:20
  Status: 200
  Content-Type: application/json
  Size: 551 kB
{
    "status": "ok",
    "results_time": "0.0564 sec.",
    "results_count": 2187,
    "results": [
        {
            "se_id": 37,
            "se_name": "google.com.af",
            "se_country_iso_code": "AF",
            "se_country_name": "Afghanistan",
...
GET("https://api.dataforseo.com/v2/cmn_se/$country_iso_code")
Response [https://api.dataforseo.com/v2/cmn_se/$country_iso_code]
  Date: 2018-07-08 15:48
  Status: 200
  Content-Type: application/json
  Size: 100 B
{
    "status": "ok",
    "results_time": "0.0375 sec.",
    "results_count": 0,
    "results": []
GET("https://api.dataforseo.com/v2/cmn_se/$op_tasks_post")
Response [https://api.dataforseo.com/v2/cmn_se/$op_tasks_post]
  Date: 2018-07-08 16:10
  Status: 200
  Content-Type: application/json
  Size: 100 B
{
    "status": "ok",
    "results_time": "0.0475 sec.",
    "results_count": 0,
    "results": []