Push-Pull
了解 Oxylabs 网页爬虫 API 的 Push-Pull 集成方法。提交任务,然后稍后使用 JSON 格式轮询结果端点。
Push-Pull 是我们推荐的集成方法,用于可靠地处理大量数据。
访问 Oxylabs 的 GitHub 仓库以获取完整的工作示例,演示 Python 中的 Push-Pull 集成.
Push-Pull 是一种异步集成方法。提交任务后,您将立即收到一个 JSON 响应,其中包含所有任务详情,包括任务参数、ID 以及用于结果下载和状态检查的 URL。任务处理完毕后,如果您提供了 JSON 有效载荷,我们会将其发送到您的服务器,前提是您提供了 回调 URL。结果在完成后至少可以 检索 24 小时 以上。
通过 Push-Pull,您可以将结果直接上传到您的 云存储 (Google Cloud Storage、AWS S3、Alibaba Cloud OSS 或其他兼容 S3 的存储)。
您还可以使用以下工具探索 Push-Pull 的工作方式: Postman.
单个任务
端点
此端点仅接受单个 query 或 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"}'import requests
from pprint import pprint
# 构建负载。
payload = {
"source": "ENTER_SOURCE_HERE", # 选择的来源,例如 "universal"
"url": "https://www.example.com", # 检查具体来源应使用 "url" 还是 "query"
"geo_location": "United States", # 某些来源接受邮编或坐标
#"render" : "html", # 如果要在页面内渲染 JavaScript,则取消注释
#"render" : "png", # 如果要对抓取的网页截图,则取消注释
#"parse" : true, # 检查哪些来源支持解析数据
#"callback_url": "https://your.callback.url", # 使用回调监听时为必需项
"callback_url": "https://your.callback.url",
"storage_type": "s3",
"storage_url": "s3://your.storage.bucket.url"
}
# 获取响应。
response = requests.request(
'POST',
'https://data.oxylabs.io/v1/queries',
auth=('YOUR_USERNAME', 'YOUR_PASSWORD'), # 在此填写您的凭据
json=payload,
)
# 将美化后的响应打印到标准输出。
pprint(response.json())输出
该 API 将以 JSON 响应任务信息,类似如下:
数据字典
有关任务输入参数的详细说明,请查阅下表或参考您感兴趣的爬虫的具体文档页面。
created_at
任务创建的日期时间。
字符串
client_id
与发起请求的客户端用户名关联的数值 ID。
字符串
client_notes
客户端在发送任务时提交的备注。
字符串
id
任务的唯一 ID。
字符串
status
任务的状态。 pending 表示任务仍在处理中。 done 表示我们已完成任务。 faulted 表示我们在尝试完成任务时遇到错误并放弃了。
字符串
subdomain
网站的子域名。
字符串
updated_at
任务最后更新时间的日期时间。对于已完成的任务(status is done 或 faulted),此日期时间表示任务完成的时间。
字符串
链接
与所提供输入相关的链接列表。
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 请求有效负载中包含的头部,默认和其他可用的结果类型。
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 个 query 或 url 参数值。
Batch requests are currently not supported 用于 chatgpt 和 perplexity 来源。
端点
系统将把每个 query 或 url 作为单独的任务处理。如果您提供回调 URL,则每个关键字都会收到单独的回调。否则,我们的初始响应将包含所有关键字的任务 id信息。例如,如果您发送了 50 个关键字,我们将返回 50 个唯一的任务 id。
输入
您需要将查询参数作为 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 功能:
任务管家最后更新于
这有帮助吗?

