116
Object接口 > 异步第三方资源抓取

描述

从指定 URL 抓取资源,并将该资源存储到指定空间中。每次只抓取一个文件,抓取时可以指定保存空间名和最终资源名。

发起任务

  • 说明

抓取动作是异步操作,接受到抓取请求后服务端直接返回成功,资源会在后台进行抓取后存入存储,并产生一个回调请求通知业务服务器(如果存在回调参数)。

因为各种原因抓取失败时会产生一个json格式的特殊回调通知业务服务器。

如果被抓取的源站屏蔽(屏蔽可能是抓取源站有 IP、UA 等限制策略)来自七牛的抓取操作,那么不能确保一定可以抓取成功。

POST请求鉴权签名需要包含Body内容

  • 请求

    POST /sisyphus/fetch HTTP/1.1
    Host: api-<Zone>.qiniu.com
    Content-Type: application/json
    Authorization: Qiniu <AccessToken>
    Body:
    {
    "url" : "<url>",
    "host" : "<host>",
    "bucket": "<bucket>",
    "key": "<key>",
    "md5": "<md5>",
    "callbackurl": "<callbackurl>",
    "callbackbody": "<callbackbody>",
    "callbackbodytype": "<callbackbodytype>",
    "file_type":<file_type>
    }
  • 请求参数

Host: api-<Zone>.qiniu.com 中的 <Zone> 为各区域机房代号,对应关系如下

区域代号
华东z0
华北z1
华南z2
北美na0
东南亚as0
参数名称类型默认值必填说明
urlstringN/A需要抓取的url,支持设置多个用于高可用,以’;’分隔,当指定多个url时可以在前一个url抓取失败时重试下一个
bucketstringN/A所在区域的bucket
hoststring从指定url下载数据时使用的Host
keystring文件存储的key,不传则使用文件hash作为key
md5string文件md5,传入以后会在存入存储时对文件做校验,校验失败则不存入指定空间
etagstring文件etag,传入以后会在存入存储时对文件做校验,校验失败则不存入指定空间
callbackurlstring回调URL
callbackbodystring回调Body
callbackbodytypestring回调Body内容类型,默认为”application/x-www-form-urlencoded”
callbackhoststring回调时使用的Host
file_typeint0存储文件类型 0:正常存储(默认),1:低频存储
ignore_same_keyboolfalse如果空间中已经存在同名文件则放弃本次抓取(仅对比Key,不校验文件内容)
  • 返回
{"id":"<ID>","wait":<Wait>}
  • 返回参数
参数名称说明
id异步任务Id
wait当前任务前面的排队任务数量,0表示当前任务正在进行,-1表示任务已经至少被处理过一次(可能会进入重试逻辑)
  • 抓取失败时特殊回调消息体格式

特殊回调消息体包含发起请求时的参数和错误信息,示例不包含所有参数

{
"url" : "<url>",
"bucket": "<bucket>",
"key": "<key>",
"md5": "<md5>",
"callbackurl": "<callbackurl>",
"callbackbody": "<callbackbody>",
"callbackbodytype": "<callbackbodytype>",
"file_type":<file_type>,
"err":"<err>",
"code":<code>
}
参数名称说明
err错误信息
code错误码

查询任务

  • 请求
GET /sisyphus/fetch?id=<ID> HTTP/1.1
Host: api-<Zone>.qiniu.com
Authorization: Qiniu <AccessToken>
  • 返回
{"id":"<ID>","wait":<Wait>}

示例(发起异步任务)

  • 请求
POST /sisyphus/fetch HTTP/1.1
Host: api-z0.qiniu.com
Content-Type: application/json
User-Agent: Go-http-client/1.1
Authorization: Qiniu j853F3bLkWl59I5BOkWm6q1Z1mZClpr9Z9CLfDE0:FwliyUEz-rL1rb9qVkd0xYosBng=
Body:
{
"url" : "http://www.qiniu.com",
"bucket": "test",
"key": "qiniu",
"callbackurl": "http://www.qiniu.com/callback",
"callbackbody": "$(bucket)"
}
  • 响应
HTTP/1.1 200 OK
Content-Length: 94
Connection: keep-alive
Content-Type: application/json
Date: Tue, 19 Sep 2017 06:28:18 GMT
Server: nginx
X-Reqid: jXwAAH8259lkr-UU
Body:
{"id":"eyJ6b25lIjoiejAiLCJwYXJ0X2lkIjo2Mywib2Zmc2V0IjowfQ==","wait":-1}

这条帮助是否解决了您的问题? 已解决 未解决

提交成功!非常感谢您的反馈,我们会继续努力做到更好! 很抱歉未能解决您的疑问。我们已收到您的反馈意见,同时会及时作出反馈处理!