For the complete documentation index, see llms.txt. This page is also available as Markdown.

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.

单个任务

端点

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

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

输入

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

curl --user "USERNAME:PASSWORD" \
'https://data.oxylabs.io/v1/queries' \
-H "Content-Type: application/json" \
 -d '{"source": "universal", "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"}'
import requests
from pprint import pprint


# Structure payload.
payload = {
    "source": "universal", # Source you choose e.g. "universal"
    "url": "https://www.example.com", # Check the docs of the specific source to see whether you should use "url" or "query"
    "geo_location": "United States", # Some sources accept zip codes or coordinates
    #"render" : "html", # Uncomment if you want to render JavaScript within the page
    #"render" : "png", # Uncomment if you want to take a screenshot of a scraped web page
    #"parse" : True, # Check what sources support parsed data
    "callback_url": "https://your.callback.url", # Required if you use the callback listener
    "storage_type": "s3", 
    "storage_url": "s3://your.storage.bucket.url"
}

# Get response.
response = requests.request(
    'POST',
    'https://data.oxylabs.io/v1/queries',
    auth=('YOUR_USERNAME', 'YOUR_PASSWORD'), #Your credentials go here
    json=payload,
)

# Print prettified response to stdout.
pprint(response.json())

输出

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

数据字典

下表描述了任务响应中返回的字段。对于您可发送的输入参数,请参阅您所使用来源的文档页面。

描述
类型

created_at

任务创建时间。

字符串

client_id

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

字符串

client_notes

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

字符串

content_encoding

返回内容的编码。在以下情况下,请在负载中设置它: 下载图片;它会在任务响应中原样返回。

字符串

id

任务的唯一 ID。

字符串

statuses

爬取或解析任务的状态代码。您可以在 这里.

整数

status

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

字符串

subdomain

网站的子域名。

字符串

updated_at

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

字符串

_links

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

JSON 数组

_links:rel

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

字符串

_links:href

资源的 URL。

字符串

_links:href_list

资源 URL 列表,每页一个。返回于 而不是 href 在其 relresults-content开头的条目上。参见 检索任务内容.

JSON 数组

_links: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/12345678900987654321/results.

这些 _links URL 以 http:// 方案返回。请将其替换为 https:// 后再调用它们,以免凭据未加密传输。

端点

您可以使用以下端点获取不同的结果类型:

您还可以获取 多个结果类型 ,并在单个响应中返回,例如:

若要单独获取某一页的原始内容,而不是放在 JSON 对象中,请使用 content 端点,其中 {n} 表示页面编号,起始于 1。相同的 类型 值也适用。

输入

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

输出

该表根据 API 请求负载中包含的参数解释默认结果类型。

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

-

-

-

html

html

-

-

html

html

-

true

xhr

html

true

true

parsed

png

-

-

png

-

true

-

parsed

html

true

-

parsed

png

true

-

png

默认情况下, /results 端点只返回该负载的默认输出。若要接收其他结果类型,请添加 类型 下方显示的查询参数 端点 。每个请求的类型都会作为单独条目返回到 results 数组中。这是 多个结果类型 功能,并且在 Push-Pull 和 Realtime.

以下是 /results 端点的示例响应。除了 results之外,还会返回一个 任务 对象,其中包含与下文所述相同的任务详情 数据字典,此处已缩写。一些来源还会返回 _request, _responsesession_info 到每个结果中。

结果可以通过设置 回调 回调服务自动获取。为此,在提交任务时指定一个能够接受传入 HTTP(S) 请求的服务器 URL。当我们的系统完成任务时,它将 POST 向提供的 URL 发送一个 JSON 负载,Callback 服务将按 Callback 实现示例中的说明下载结果.

批量查询

Scraper APIs 支持提交多达 5,000 查询URL 个参数值到单个批量请求中。

端点

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

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

输入

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

你可能会注意到,上面的代码示例没有说明 JSON 负载应如何格式化,并指向一个预先准备好的 JSON 文件。下面是 keywords.json 文件,包含多个 查询 参数值:

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

输出

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

每个条目都包含与单个任务响应相同的字段; {...} 表示此处为简洁起见省略的字段。

获取通知器 IP 地址列表

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

端点

输入

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

输出

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

任务管家

任务管家是一项可用于安排重复抓取任务的服务。

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

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

任务管家

最后更新于

这有帮助吗?