看起来您没有正确配置
config
。我在您的代码中没有看到
config=
。此外,
body
的编码也不正确。
另外,在
API文档中,我没有看到关于
grant_type
的任何信息。看起来那里应该放置一组任务,例如:
{882394209: {'site': 'ranksonic.com', 'crawl_max_pages': 10}}
回复:
{'results_count': 1, 'results_time': '0.0629 sec.', 'results': {'2308949': {'post_id': 2308949, 'post_site': 'ranksonic.com',
'task_id': 882394209, 'status': 'ok'}}, 'status': 'ok'}
好的,首先我们需要使用 set_config
或 config=
:
username <- 'Hack-R@stackoverflow.com'
password <- 'vxnyM9s7FAKESeIO'
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": []
那是其中一个问题。此外,为了
POST
数据,他们需要您将其指定为
json
,例如:
encode =“json”
。来自他们的文档:
所有POST数据应以JSON格式(UTF-8编码)发送。通过POST方法传递任务数组来发送关键字。应在此POST数组的数据字段中指定数据。我们建议一次发送多达100个任务。
进一步地:
当任务数组发送到数据字段时,使用POST方法进行任务设置。每个数组元素具有以下结构:
然后列出2个必填字段和许多可选字段。
还要注意的是,可以在之后使用
reset_config()
作为更好的实践。如果您将经常运行此脚本、共享它或者使用多台计算机,我建议您将凭据放入环境变量中,而不是放入脚本中,以提高安全性和便利性。
另一个最后的建议是,您可能希望利用他们发布的 Python 客户端库和大量示例。由于每个新的 API 请求都是你在 R 中首创而没有他们的支持,因此仅仅在 Python 中进行数据收集可能会更加划算。
这是一个有趣的 API。如果您前往开放数据Stack Exchange,应该考虑与该社区分享它。