在R中调用RESTAPI
我最近发现了dataforseo api,并尝试通过R调用它在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),
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": []