Documentation has been updated: see help center and changelog in one place.

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。

字符串

statuses

抓取或解析任务的状态码。您可以在此处查看状态码描述 此处.

整数

status

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

字符串

subdomain

网站的子域名。

字符串

updated_at

任务最后更新时间的日期时间。对于已完成的任务(status is donefaulted),此日期时间表示任务完成的时间。

字符串

链接

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

JSON 数组

链接:rel

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

字符串

链接:href

资源的 URL。

字符串

链接:方法

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

字符串

回调

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

输入

输出

检查任务状态

如果您在提交任务时提供了有效的回调 URL,我们将在任务完成时通过向指定的回调 URL 发送一个 JSON 有效载荷来通知您。该有效载荷将表明任务已完成并且其状态设置为 done.

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

端点

输入

输出

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

状态值

参数
说明

pending

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

done

任务已完成。您可以通过查询响应中 href 字段下提供的 URL 来检索结果,位于 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 参数
默认输出
可用输出

x

x

x

html

html

html

x

x

html

html

html

x

true

xhr

html, xhr

html

true

true

parsed

html, xhr, parsed

png

x

x

png

html, png

x

true

x

parsed

html, parsed

html

true

x

parsed

html, parsed

png

true

x

png

html, parsed, png

下面是一个示例响应,来自 /results 端点的代码示例:

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

批量查询

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

端点

系统将把每个 queryurl 作为单独的任务处理。如果您提供回调 URL,则每个关键字都会收到单独的回调。否则,我们的初始响应将包含所有关键字的任务 id信息。例如,如果您发送了 50 个关键字,我们将返回 50 个唯一的任务 id

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

输入

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

您可能注意到上面的代码示例没有说明 JSON 有何格式,并且引用了一个预先制作的 JSON 文件。下面是 keywords.json 文件,包含多个 query 参数值:

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

输出

该 API 将返回一个 JSON 对象,包含为每个创建的任务生成的任务信息。响应将类似于:

获取回调器 IP 地址列表

您可能想把向您发送回调消息的 IP 加入白名单,或为其他用途获取这些 IP 列表。您可以通过 GET访问此端点:

端点

输入

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

输出

该 API 将返回向您系统发送回调请求的 IP 列表:

Scheduler

Scheduler 是一个可用于安排定期爬取任务的服务。

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

访问此页面 以了解如何使用 Scheduler 功能:

任务管家

最后更新于

这有帮助吗?