Push-Pull

了解 Oxylabs 网页爬虫API 的 Push-Pull 集成方式。提交任务后,稍后使用 JSON 格式数据轮询结果端点。

Push-Pull 是我们推荐的集成方式,适合可靠地处理大量数据。

Push-Pull 是一种异步集成方式。提交任务后,你会立即收到一个 JSON 响应,其中包含所有任务详情,包括任务参数、ID,以及用于下载结果和检查状态的 URL。任务处理完成后,我们将通过一个 JSON 发送到你服务器的有效负载,如果你提供了一个 回调 URL。结果在完成后可保留供检索 至少 24 小时

使用 Push-Pull,你可以将结果直接上传到你的 云存储 (Google Cloud Storage、AWS S3、Alibaba Cloud OSS,或其他兼容 S3 的存储)。

如果你不想为接收回调通知设置服务,也可以直接定期检索结果(轮询).

你也可以使用以下工具了解 Push-Pull 的工作方式: Postman.

单任务

端点

此端点只接受单个 queryURL 值分隔。

POST https://data.oxylabs.io/v1/queries

输入

请按照下面示例,将任务参数放在 JSON 有效负载中。Python 和 PHP 示例包含注释以便说明。

curl --user "user:pass1" \
'https://data.oxylabs.io/v1/queries' \
-H "Content-Type: application/json" \
 -d '{"source": "ENTER_SOURCE_HERE", "url": "https://www.example.com", "geo_location": "United States", "callback_url": "https://your.callback.url", "storage_type": "s3", "storage_url": "s3://your.storage.bucket.url"}'

输出

API 将返回一个包含任务信息的 JSON,类似如下:

数据字典

有关任务输入参数的详细说明,请参阅下表,或查看你感兴趣的抓取器对应的具体文档页面。

说明
类型

created_at

任务创建时间。

字符串

client_id

与发起请求的客户端用户名关联的数字 ID。

字符串

client_notes

客户端在发送任务时提交的备注。

字符串

content_encoding

如果你正在下载图片,请添加此参数。了解更多 此处.

字符串

ID

任务的唯一 ID。

字符串

状态

抓取或解析任务的状态代码。你可以查看这里描述的状态代码 此处.

整数

status

任务状态。 pending 表示任务仍在处理中。 done 表示我们已完成任务。 faulted 表示在尝试完成任务时遇到错误,并已放弃。

字符串

subdomain

网站的子域。

字符串

updated_at

任务最后更新时间。对于已完成的任务(statusdonefaulted),此时间表示任务完成时间。

字符串

链接

与所提供输入相关的链接列表。

JSON 数组

链接:rel

链接类型。 self URL 包含任务的元数据,而 结果 URL 包含任务结果。

字符串

链接:href

资源的 URL。

字符串

链接:method

与给定 URL 交互时应使用的 HTTP 方法。

字符串

回调

回调是一个 POST 我们发送到你机器上的请求,用于通知数据提取任务已完成,并提供一个用于下载抓取内容的 URL。这意味着你不需要 手动检查任务状态 。一旦数据到达,我们会通知你,你现在只需要 检索它.

输入

输出

检查任务状态

如果你在提交任务时提供了有效的回调 URL,我们会在完成后通过向 JSON 发送有效负载到指定的回调 URL 来通知你。该有效负载会表明任务已完成,其状态已设置为 done.

但是,如果你提交任务时没有使用 回调服务,你可以手动检查任务状态。从任务提交后收到的响应消息的 href 字段中的 rel:self 部分取回 URL。检查任务状态的 URL 将类似于以下内容: http://data.oxylabs.io/v1/queries/12345678900987654321。查询此 URL 将返回任务信息,包括其当前 status.

端点

输入

输出

任务完成后,API 将以 JSON 格式返回查询信息。任务状态将变为 done,表示任务已结束。你可以通过查询提供的某个链接来检索内容。此外,响应还将包含任务最后更新的时间戳,方便你跟踪处理时间。

状态值

参数
说明

pending

任务仍在处理,尚未完成。

done

任务已完成。你可以通过查询中提供的 URL 获取结果 href 下的 rel:results 部分,例如: http://data.oxylabs.io/v1/queries/12345678900987654321/results.

faulted

任务出现问题,我们无法完成。你无需为任何 faulted 任务付费。

检索任务内容

任务准备好检索后,你可以使用响应中 rel:results 部分提供的 URL。该 URL 如下所示: http://data.oxylabs.io/v1/queries/7173957294344910849/results.

端点

你可以使用以下端点检索不同类型的结果:

你也可以检索 多个结果类型 并在单个响应中返回,例如:

输入

下面是演示如何使用 /results 端点的代码示例:

输出

此表说明了基于 API 请求负载中包含的标头,默认和其他可用的结果类型。

渲染参数
解析参数
XHR 参数
默认输出
可用输出

-

-

-

html

html

html

-

-

html

html

html

-

true

xhr

html, xhr

html

true

true

parsed

html, xhr, parsed

png

-

-

png

html, png

-

true

-

parsed

html, parsed

html

true

-

parsed

html, parsed

png

true

-

png

html, parsed, png

下面是 /results 端点的代码示例:

你可以通过设置 回调 服务,无需定期检查任务状态即可自动检索结果。为此,在提交任务时,请指定一个能够接收传入 HTTP(S) 请求的服务器 URL。当我们的系统完成任务后,它将 POST 一个 JSON 负载发送到提供的 URL,而 Callback 服务将按 Callback 实现示例.

批量查询

Scraper APIs 支持在单个批量请求中提交最多 5,000 个 queryurl 参数值。

端点

系统会将每个 queryurl 提交的内容作为单独任务处理。如果你提供 callback URL,则每个关键词都会收到单独回调。否则,我们的初始响应将包含所有关键词的任务 ID。例如,如果你发送了 50 个关键词,我们将返回 50 个唯一的任务 ID

重要: 使用 /batch 端点时,你只能提交 queryurl参数值列表(取决于你使用的 source )。所有其他参数都应使用单个值。

输入

你需要将查询参数作为 JSON 负载提交。以下是提交批量任务的方法:

你可能注意到,上面的代码示例没有说明 JSON 负载应如何格式化,并指向了一个预先制作好的 JSON 文件。下面是 keywords.json 文件内容,其中包含多个 query 参数值:

……下面是一个 keywords.json 批量输入文件,其中包含多个 URL:

输出

API 将返回一个 JSON 对象,其中包含每个已创建任务的任务信息。响应将类似于这样:

获取 Notifier IP 地址列表

你可能希望将向你发送回调消息的 IP 加入白名单,或者出于其他目的获取这些 IP 的列表。你可以通过 GET此端点来完成:

端点

输入

下面的代码示例展示了如何访问 /callbacker_ips 端点的代码示例:

输出

API 将返回向你的系统发起回调请求的 IP 列表:

任务管家

任务管家是一项可用于安排周期性抓取任务的服务。

它扩展了 Push-Pull 集成的功能,最好与 Cloud integration 功能一起使用。

访问此页面 了解如何使用 任务管家 功能:

任务管家

最后更新于

这有帮助吗?