Push-Pull

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

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

circle-check

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

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

circle-info

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

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

单任务

端点

此端点只接受单个 查询URL 值。

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

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

字符串

links

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

JSON 数组

links:rel

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

字符串

links:href

资源的 URL。

字符串

links:method

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

字符串

回调

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

输入

输出

检查任务状态

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

但是,如果您提交任务时没有使用 回调服务,您可以手动检查任务状态。从 href 字段中获取 URL,该字段位于 rel:self 部分中,即提交任务后收到的响应消息里。用于检查任务状态的 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 请求负载中包含的标头,说明默认和其他可用的结果类型。

Render 参数
Parse 参数
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 一个 JSON 负载到提供的 URL,并且 Callback 服务将按以下说明下载结果: 回调实现示例.

批量查询

网页爬虫API 支持在单个批量请求中提交最多 5,000 个 查询url 参数值。

circle-exclamation

端点

系统会将每个已提交的 查询url 视为单独的任务处理。如果您提供回调 URL,您将为每个关键词收到单独的调用。否则,我们的初始响应将包含所有关键词的任务 id。例如,如果您发送了 50 个关键词,我们将返回 50 个唯一的任务 id

circle-info

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

输入

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

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

……这里还有一个 keywords.json 批量输入文件,其中包含多个 URL:

输出

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

获取通知器 IP 地址列表

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

端点

输入

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

输出

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

任务管家

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

它扩展了 Push-Pull 集成的功能,并且最适合与 云集成 功能一起使用。

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

Schedulerchevron-right

最后更新于

这有帮助吗?