你知道如何使用 Oxylabs Web Scraper API 吗?这是 OxyLabs 官方最全面的介绍。
快速入门
Web Scraper API 可帮助您进行繁重的数据检索操作。您可以使用 Web Scraper API 访问各种公共页面。它能毫不费力地提取网页数据,不会出现任何延迟或错误。
Web Scraper API 使用 基本 HTTP 身份验证 需要发送用户名和密码。
这是迄今为止开始使用 Web Scraper API 最快的方法。您将向 https://ip.oxylabs.io
使用 实时 整合方法。不要忘记替换 用户名
和 密码
使用代理用户凭据。
curl --user "USERNAME:PASSWORD" 'https://realtime.oxylabs.io/v1/queries' -H "Content-Type: application/json" -d '{"source":"universal", "url":"https://ip.oxylabs.io"}'
如果您有任何本文件未涉及的问题,请联系您的客户经理或我们的支持人员,地址是 [email protected].
整合方法
Web Scraper API 支持三种集成方法,它们都有各自独特的优势:
- 推拉式.使用这种方法,现在需要与我们的端点保持活动连接,以检索数据。在发出请求后,我们的系统会在任务完成后自动 ping 用户服务器(请参阅 回调).这种方法可以节省计算资源,而且易于扩展。
- 实时.该方法要求用户与我们的端点保持活动连接,以便在任务完成时成功获取结果。这种方法可以在一个服务中实现,而推拉法则需要两个步骤。
- 超级用户接口.这种方法与实时方法非常相似,但用户可以使用 HTML Cralwer 作为代理,而不是向我们的端点发布数据。要检索数据,用户必须设置一个代理端点,并向所需的 URL 发送 GET 请求。必须使用标头添加其他参数。
我们推荐的数据提取方法是 推拉式.
推拉式
这是最简单、最可靠、最值得推荐的数据传输方法。在推拉式方案中,您向我们发送查询,我们向您返回工作 本我
工作完成后,您可以使用 本我
中检索内容 /结果
端点。您可以自己检查作业完成状态,也可以设置一个能接受 POST 查询的简单监听器。这样,一旦作业准备就绪,我们就会给你发送一条回调消息。在本例中,结果将自动 上传到您的 S3 存储桶 名为 您的邮筒名称
.
单一查询
以下端点将处理对一个关键字或 URL 的单次查询。API 将返回一条确认信息,其中包含任务信息,包括任务 本我
.您可以使用它来检查任务完成状态 本我
或者,您也可以要求我们在扫描任务完成后 ping 您的回调端点,方法是添加 回调URL
在查询中。
邮寄 https://data.oxylabs.io/v1/queries
您需要在 JSON 主体中将查询参数作为数据发布。
curl --user user:pass1\
'https://data.oxylabs.io/v1/queries' \
-H "内容类型:应用程序/json" \
-d '{"源":"universal", "url":"https://stackoverflow.com/questions/tagged/python"、"callback_url":"https://your.callback.url"、"storage_type":"s3", "storage_url":"your_bucket_name"}'
舶来品 要求
从 打印 舶来品 打印
# 结构有效载荷。
载荷 = {
来源: 普遍性,
'url'(网址: 'https://stackoverflow.com/questions/tagged/python',
回调URL: 'https://your.callback.url',
存储类型: 's3',
存储URL: your_bucket_name
}
# 获取响应。
回应 = 要求.要求(
POST,
'https://data.oxylabs.io/v1/queries',
授权=(用户, pass1),
json=载荷,
)
# 向 stdout 打印经过修饰的响应。
打印(回应.json())
<?php
$params = 矩阵(
来源 => 普遍性,
'url'(网址 => 'https://stackoverflow.com/questions/tagged/python',
回调URL => 'https://your.callback.url',
存储类型 => 's3',
存储URL => your_bucket_name
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://data.oxylabs.io/v1/queries");
curl_setopt($ch, curlopt_returntransfer, 1);
curl_setopt($ch, curlopt_postfields, json_encode($params));
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, curlopt_userpwd, "用户" . ":" . "pass1");
$headers = 矩阵();
$headers[] = "内容类型:应用程序/json";
curl_setopt($ch, curlopt_httpheader, $headers);
$result = curl_exec($ch);
回响 $result;
如果 (curl_errno($ch)) {
回响 错误: . curl_error($ch);
}
curl_close ($ch);
?>
目前不支持 HTTP 方法
API 将以 JSON 格式响应查询信息,并将其打印在响应体中,与此类似:
{
"回调URL": "https://your.callback.url",
"client_id": 5,
"创建时间": "2019-10-01 00:00:01",
"域": "com",
"地理位置": 无效,
"id": "12345678900987654321",
"限制": 10,
"locale": 无效,
"页面": 1,
"解析": 错误,
"渲染": 无效,
"url": "https://stackoverflow.com/questions/tagged/python",
"源": "普遍",
"起始页": 1,
"状态": "待定",
"存储类型": "s3",
"storage_url": "YOUR_BUCKET_NAME/12345678900987654321.json",
"子域": "www",
"更新时间": "2019-10-01 00:00:01",
"user_agent_type": "桌面",
"_链接": [
{
"rel": "自我",
"href": "http://data.oxylabs.io/v1/queries/12345678900987654321",
"方法": "GET"
},
{
"rel": "结果",
"href": "http://data.oxylabs.io/v1/queries/12345678900987654321/results",
"方法": "GET"
}
]
}
检查工作状态
如果您的查询有 回调URL
我们会在扫描任务完成后向您发送一条包含内容链接的信息。但是,如果没有 回调URL
在查询中,您需要自己检查任务状态。为此,您需要使用 href
根据 rel
:自我
在您向我们的 API 提交查询后收到的响应信息中。它应该与下面的内容相似: http://data.oxylabs.io/v1/queries/12345678900987654321
.
GET https://data.oxylabs.io/v1/queries/{id}
查询此链接将返回工作信息,包括其 地位
.有三种可能 地位
价值观
未决 |
任务仍在队列中,尚未完成。 |
完成的 |
任务完成后,您可以通过在 href 根据 rel :成果 : http://data.oxylabs.io/v1/queries/12345678900987654321/results |
有问题 |
任务出现了问题,我们无法完成任务,很可能是由于目标网站方面的服务器出错。 |
curl --user user:pass1 'https://data.oxylabs.io/v1/queries/batch' -H 内容类型:应用程序/json \
-d @keywords.json
舶来品 要求
舶来品 json
从 打印 舶来品 打印
# 从文件中获取有效载荷。
与 开(关键词.json, 'r') 作为 f:
载荷 = json.载荷(f.阅读())
回应 = 要求.要求(
POST,
'https://data.oxylabs.io/v1/queries/batch',
授权=(用户, pass1),
json=载荷,
)
# 打印经过修饰的回复。
打印(回应.json())
<?php
$paramsFile = file_get_contents(真实路径("keywords.json"));
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://data.oxylabs.io/v1/queries/batch");
curl_setopt($ch, curlopt_returntransfer, 1);
curl_setopt($ch, curlopt_postfields, $paramsFile);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, curlopt_userpwd, "用户" . ":" . "pass1");
$headers = 矩阵();
$headers[] = "内容类型:应用程序/json";
curl_setopt($ch, curlopt_httpheader, $headers);
$result = curl_exec($ch);
回响 $result;
如果 (curl_errno($ch)) {
回响 错误: . curl_error($ch);
}
curl_close ($ch);
?>
目前不支持 HTTP 方法
keywords.json
内容:
{
"url":[
"https://stackoverflow.com/questions/tagged/python",
"https://stackoverflow.com/questions/tagged/golang",
"https://stackoverflow.com/questions/tagged/php"
],
"源": "普遍",
"回调URL": "https://your.callback.url"
}
API 将以 JSON 格式响应查询信息,并将其打印在响应体中,与此类似:
{
"查询": [
{
"回调URL": "https://your.callback.url",
{...}
"创建时间": "2019-10-01 00:00:01",
"域": "com",
"id": "12345678900987654321",
{...}
"url": "https://stackoverflow.com/questions/tagged/python",
"源": "普遍",
{...}
"rel": "结果",
"href": "http://data.oxylabs.io/v1/queries/12345678900987654321/results",
"方法": "GET"
}
]
},
{
"回调URL": "https://your.callback.url",
{...}
"创建时间": "2019-10-01 00:00:01",
"域": "com",
"id": "12345678901234567890",
{...}
"url": "https://stackoverflow.com/questions/tagged/golang",
"源": "普遍",
{...}
"rel": "结果",
"href": "http://data.oxylabs.io/v1/queries/12345678901234567890/results",
"方法": "GET"
}
]
},
{
"回调URL": "https://your.callback.url",
{...}
"创建时间": "2019-10-01 00:00:01",
"域": "com",
"id": "01234567899876543210",
{...}
"url": "https://stackoverflow.com/questions/tagged/php",
"源": "普遍",
{...}
"rel": "结果",
"href": "http://data.oxylabs.io/v1/queries/01234567899876543210/results",
"方法": "GET"
}
]
}
]
}
获取通知程序 IP 地址列表
您可能希望将向您发送回调信息的 IP 列入白名单,或为其他目的获取这些 IP 的列表。这可以通过 获取
在这个端点上: https://data.oxylabs.io/v1/info/callbacker_ips
.
curl --user user:pass1 'https://data.oxylabs.io/v1/info/callbacker_ips'
舶来品 要求
从 打印 舶来品 打印
# 从回调 IP 端点获取响应。
回应 = 要求.要求(
方法=GET,
网址='https://data.oxylabs.io/v1/info/callbacker_ips',
授权=(用户, pass1),
)
# 将经过修饰的 JSON 响应打印到 stdout。
打印(回应.json())
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://data.oxylabs.io/v1/info/callbacker_ips");
curl_setopt($ch, curlopt_returntransfer, 1);
curl_setopt($ch, curlopt_customrequest, "GET");
curl_setopt($ch, curlopt_userpwd, "用户" . ":" . "pass1");
$result = curl_exec($ch);
回响 $result;
如果 (curl_errno($ch)) {
回响 错误: . curl_error($ch);
}
curl_close ($ch);
?>
目前不支持 HTTP 方法
API 将返回向您的系统发出回调请求的 IP 列表:
{
"ips": [
"x.x.x.x",
"y.y.y.y"
]
}
上传到存储器
默认情况下,Web Scraper API 的作业结果存储在我们的数据库中。这意味着您需要查询我们的结果端点并自行检索内容。自定义存储功能允许您将结果存储在自己的云存储中。此功能的优势在于,您无需额外请求即可获取结果,所有内容都会直接存储到您的存储桶中。
目前,我们只支持 Amazon S3。如果您想使用其他类型的存储,请联系您的客户经理讨论时间安排。
要将作业结果上传到 Amazon S3 存储桶,需要设置特殊权限。为此,请转到 https://s3.console.aws.amazon.com/ > S3 > 存储 > 桶名称(如果没有,请新建) > 权限 > 桶策略
您可以在此找到水桶政策 JSON 或右侧的代码示例区。不要忘记更改 您的邮筒名称
.该策略允许我们写入您的邮筒、为您上传文件并了解邮筒的位置。
要使用此功能,您需要在请求中指定两个附加参数。了解更多信息 这里.
上传路径如下 YOUR_BUCKET_NAME/job_ID.json
.您可以在提交请求后从我们收到的回复正文中找到工作编号。在 本例 工作编号为 12345678900987654321
.
{
"版本": "2012-10-17",
"Id": "Policy1577442634787",
"声明": [
{
"希德": "Stmt1577442633719",
"效果": "允许",
"校长": {
"AWS": "arn:aws:iam::324311890426:user/oxylabs.s3.uploader"
},
"行动": "s3:GetBucketLocation,
"资源": "arn:aws:s3:::YOUR_BUCKET_NAME"
},
{
"希德": "Stmt1577442633719",
"效果": "允许",
"校长": {
"AWS": "arn:aws:iam::324311890426:user/oxylabs.s3.uploader"
},
"行动": [
"s3:PutObject,
"s3:PutObjectAcl"
],
"资源": "arn:aws:s3:::YOUR_BUCKET_NAME/*"
}
]
}
实时
数据提交与推拉式方法相同,但使用实时方法时,我们将在连接打开时返回内容。您向我们发送一个查询,连接保持打开,我们检索内容并将其发送给您。处理此问题的端点如下:
邮寄 https://realtime.oxylabs.io/v1/queries
开放连接的超时限制为 100 秒。因此,在极少数负载较重的情况下,我们可能无法确保将数据发送给您。
您需要在 JSON 主体中将查询参数作为数据发布。详情请参阅示例。
curl --user user:pass1 'https://realtime.oxylabs.io/v1/queries' -H "内容类型:应用程序/json" \
-d '{"源":"universal","url":"https://stackoverflow.com/questions/tagged/python"}'
舶来品 要求
从 打印 舶来品 打印
# 结构有效载荷。
载荷 = {
来源: 普遍性,
'url'(网址: 'https://stackoverflow.com/questions/tagged/python',
}
# 获取响应。
回应 = 要求.要求(
POST,
'https://realtime.oxylabs.io/v1/queries',
授权=(用户, pass1),
json=载荷,
)
# 返回的不是包含任务状态和结果 url 的响应,而是
# JSON 响应结果。
打印(回应.json())
<?php
$params = 矩阵(
来源 => 普遍性,
查询 => 沙发,
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://realtime.oxylabs.io/v1/queries");
curl_setopt($ch, curlopt_returntransfer, 1);
curl_setopt($ch, curlopt_postfields, json_encode($params));
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, curlopt_userpwd, "用户" . ":" . "pass1");
$headers = 矩阵();
$headers[] = "内容类型:应用程序/json";
curl_setopt($ch, curlopt_httpheader, $headers);
$result = curl_exec($ch);
回响 $result;
如果 (curl_errno($ch)) {
回响 错误: . curl_error($ch);
}
curl_close ($ch);
?>
# URL 必须编码以转义 `&` 和 `=` 字符。本示例中不需要。
https://realtime.oxylabs.io/v1/queries?source=universal&url=https://stackoverflow.com/questions/tagged/python&access_token=12345abcde
打开连接时将返回的响应体示例:
{
"结果": [
{
"内容": "<html
内容
"
"创建时间": "2019-10-01 00:00:01",
"更新时间": "2019-10-01 00:00:15",
"id": 无效,
"页": 1,
"url": "https://stackoverflow.com/questions/tagged/python",
"job_id": "12345678900987654321",
"状态代码": 200
}
]
}
超级用户接口
如果您曾经使用过普通代理进行数据搜刮,那么集成 SuperAPI 传输方法将轻而易举。您只需将我们的入口节点用作代理,使用 Web Scraper API 凭据进行授权,然后忽略证书即可。在 cURL
这是 -k
或 --不安全
.您的数据将通过开放连接发送给您。
GET realtime.oxylabs.io:60000
超级用户接口只支持少量参数,因为它 仅适用于 直接 数据源 其中提供了完整的 URL。这些参数应作为标头发送。这是一份可接受的参数列表:
X-OxySERPs-User-Agent-Type |
虽然无法指明特定的 User-Agent,但您可以让我们知道您使用的浏览器和平台。支持的用户代理列表如下所示 这里. |
如果您在设置超级用户接口时需要帮助,请通过以下方式与我们联系 [email protected].
curl -k \
-x realtime.oxylabs.io:60000 \
-用户:pass1 \
-H "X-OxySERPs-User-Agent-Type: desktop_chrome" \
"https://stackoverflow.com/questions/tagged/python"
舶来品 要求
从 打印 舶来品 打印
# 定义代理口令。不要忘记在此处填写您的真实用户和密码。
代理 = {
http: 'http://user:[email protected]:60000',
https: 'https://user:[email protected]:60000',
}
回应 = 要求.要求(
GET,
'https://stackoverflow.com/questions/tagged/python',
授权=(用户, pass1),
核对=假的, # 或接受我们的证书。
代理=代理,
)
# 将结果页打印到 stdout
打印(回应.文本)
# 将返回的 HTML 保存为 result.html 文件
与 开(结果.html, 'w') 作为 f:
f.写道(回应.文本)
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://stackoverflow.com/questions/tagged/python");
curl_setopt($ch, curlopt_returntransfer, 1);
curl_setopt($ch, CURLOPT_PROXY, realtime.oxylabs.io:60000);
curl_setopt($ch, curlopt_proxyuserpwd, "用户" . ":" . "pass1");
curl_setopt($ch, curlopt_ssl_verifypeer, 错误);
curl_setopt($ch, curlopt_ssl_verifyhost, 错误);
$result = curl_exec($ch);
回响 $result;
如果 (curl_errno($ch)) {
回响 错误: . curl_error($ch);
}
curl_close ($ch);
超级用户接口不支持 HTTP 方法
内容类型
Web Scraper API 返回 原始HTML.
下载图片
可以通过 Web Scraper API 下载图像。如果通过 SuperAPI 下载,只需将输出保存到图片扩展名即可。例如
curl -k -x realtime.oxylabs.io:60000 -U user:pass1 "https://example.com/image.jpg" >> image.jpg
如果您使用 推拉式 或 实时 方法,您需要添加 content_encoding
参数的值为 base64
.收到结果后,您需要解码来自 内容
转换成字节并保存为图像文件。右侧有一个 Python 示例。
数据来源
Web Scraper API 接受 URL 以及其他参数,如 User-Agent 类型、代理位置等。请参见此方法,我们将其称为 直接下文将对此进行说明。
Web Scraper API 能够在刮擦时渲染 JavaScript。这样,您就能从网页中获取更多数据,并获得屏幕截图。
如果您对文件的任何部分有疑问,请致电我们 [email protected] 或联系您的客户经理。
直接
Web Scraper API 用于检索互联网上任何 URL 的内容。 职位
-将 JSON 格式的参数发送到以下端点,将把指定的 URL 提交到提取队列。
查询参数
参数 | 说明 | 默认值 |
消息来源 | 数据来源 | 万有 |
网址 | 通用网页的直接 URL(链接 | – |
用户代理类型 | 设备类型和浏览器。完整列表如下 这里。 | 桌面 |
地理位置 | 用于检索数据的代理地理位置。支持位置的完整列表如下 这里。 | |
地点 | 正如 Accept-Language 标头所期望的那样。 | |
给予 | 启用 JavaScript 渲染。在目标需要 JavaScript 加载内容时使用。仅适用于推拉(又称回调)方法。该参数有两个可用值:html(获取原始输出)和 png(获取 Base64 编码的截图)。 | |
content_encoding | 如果要下载图像,请添加此参数。了解更多信息 这里。 | base64 |
背景 | Base64 编码的 POST 请求正文。它只有在 http_method 设置为 post 时才有用。 | – |
内容 | ||
背景 | 递上自己的饼干 | – |
饼干 | ||
背景 | 指明是否希望扫描程序跟踪重定向(带有目标 URL 的 3xx 响应),以获取重定向链末端 URL 的内容。 | – |
follow_redirects | ||
背景 | 传递自己的标头 | – |
页眉 | ||
背景 | 如果您想通过 Universal scraper 向目标 URL 发出 POST 请求,请将其设置为 "发布"。 | 获取 |
http_method | ||
背景 | 如果您想在多个请求中使用同一个代理,可以使用此参数。只需将会话设置为任意字符串,我们就会为该 ID 分配一个代理,并最多保留 10 分钟。之后,如果您使用相同的会话 ID 发出另一个请求,我们就会为该特定会话 ID 分配一个新的代理。 | – |
session_id | ||
背景 | 定义一个自定义 HTTP 响应代码(或其中的几个),我们应根据该代码认为刮擦成功并将内容返回给您。如果您希望我们返回 503 错误页面或在其他一些非标准情况下,这可能会很有用。 | – |
成功状态代码 | ||
回调URL | URL 到您的回调端点。 | – |
存储类型 | 存储服务提供商。目前只支持亚马逊 S3:s3。完整的实现可以在 上传到存储器 页。只能通过推拉(回调)方法运行。 | – |
存储URL | 您的 Amazon S3 存储桶名称。仅适用于推挽(回调)方法。 | – |
- 所需参数
在本例中,应用程序接口将以推拉方式检索一个通用产品页面。所有可用参数都包含在内(尽管在同一请求中并非总是必要或兼容),以便让您了解如何格式化您的请求:
curl --user user:pass1 \
'https://data.oxylabs.io/v1/queries' \
-H "内容类型:应用程序/json" \
-d '{"源":"universal", "url":"https://stackoverflow.com/questions/tagged/python", "user_agent_type":"mobile", "render":"html"、
"上下文":{"key":"headers", "value": ["Accept-Language":"en-US", "Content-Type":"application/octet-stream", "Custom-Header":"自定义标题内容"]},{"key":"cookies","value":[{"key":"NID","值":"1234567890"},{"key":"1P JAR","值":"0987654321"},{"key":"follow_redirects", "value": true}, {"key":"http_method", "value":"get"}, {"key":"内容","值":"base64EncodedPOSTBody"}, {"key":"successful_status_codes", "value": [303, 808, 909]}]}]}'
舶来品 要求
从 打印 舶来品 打印
# 结构有效载荷。
载荷 = {
来源: 普遍性,
'url'(网址: 'https://www.etsy.com/listing/399423455/big-glass-house-planter-handmade-glass?ref=hp_prn&frs=1',
用户代理类型: 桌面,
地理位置: 美国,
上下文: [
{
钥匙: session_id,
价值: 1234567890abcdef
}
{
钥匙: 标题, 价值:
{
接受语言: en-US,
内容类型: 应用程序/八字节流,
自定义标题: 自定义标题内容
}
},
{
钥匙: 饼干,
价值: [{
钥匙: NID,
价值: '1234567890'
},
{
钥匙: 1P_JAR,
价值: '0987654321'
}
]
},
{
钥匙: follow_redirects,
价值: 真
},
{
钥匙: 成功状态代码,
价值: [303, 808, 909]
},
{
钥匙: http_method,
价值: 获取
}
{
钥匙: 内容
价值: base64EncodedPOSTBody
}
],
回调URL: 'https://your.callback.url',
}
# 获取响应。
回应 = 要求.要求(
POST,
'https://data.oxylabs.io/v1/queries',
授权=(用户, pass1),
json=载荷,
)
# 向 stdout 打印经过修饰的响应。
打印(回应.json())
<?php
$params = [
来源 => 普遍性,
'url'(网址 => 'https://stackoverflow.com/questions/tagged/python',
上下文 => [
[
钥匙 => session_id,
价值 => 1234567890abcdef
],
[
钥匙 => 标题,
价值 => [
接受语言 => en-US,
内容类型 => 应用程序/八字节流,
自定义标题 => 自定义标题内容
],
],
[
钥匙 => 饼干,
价值 => [
[钥匙 => NID, 价值 => '1234567890'],
[钥匙 => 1P_JAR, 价值 => '0987654321']
]
],
[
钥匙 => follow_redirects,
价值 => 真实
],
[
钥匙 => 成功状态代码,
价值 => [303, 808, 909]
],
[
钥匙 => http_method,
价值 => 获取
],
[
钥匙 => 内容,
价值 => base64EncodedPOSTBody
]
]
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://data.oxylabs.io/v1/queries");
curl_setopt($ch, curlopt_returntransfer, 1);
curl_setopt($ch, curlopt_postfields, json_encode($params));
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, curlopt_userpwd, "用户" . ":" . "pass1");
$headers = 矩阵();
$headers[] = "内容类型:应用程序/json";
curl_setopt($ch, curlopt_httpheader, $headers);
$result = curl_exec($ch);
回响 $result;
如果 (curl_errno($ch)) {
回响 错误: . curl_error($ch);
}
curl_close ($ch);
?>
HTTP 方法目前不支持 Push-Pull
以下是实时模式下的相同示例:
curl --user user:pass1 \
'https://data.oxylabs.io/v1/queries' \
-H "内容类型:应用程序/json" \
-d '{"源":"universal", "url":"https://stackoverflow.com/questions/tagged/python", "user_agent_type":"mobile", "context":{"key":"headers", "value": ["Accept-Language":"en-US","Content-Type":"application/octet-stream","Custom-Header":"自定义标题内容"]},{"key":"cookies","value":[{"key":"NID","值":"1234567890"},{"key":"1P JAR","值":"0987654321"},{"key":"follow_redirects", "value": true}, {"key":"http_method", "value":"get"}, {"key":"内容","值":"base64EncodedPOSTBody"}, {"key":"successful_status_codes", "value": [303, 808, 909]}]}]}'
舶来品 要求
从 打印 舶来品 打印
# 结构有效载荷。
载荷 = {
来源: 普遍性,
'url'(网址: 'https://stackoverflow.com/questions/tagged/python',
用户代理类型: 移动,
地理位置: 美国,
上下文: [
{
钥匙: session_id,
价值: 1234567890abcdef
}
{
钥匙: 标题, 价值:
{
接受语言: en-US,
内容类型: 应用程序/八字节流,
自定义标题: 自定义标题内容
}
},
{
钥匙: 饼干,
价值: [{
钥匙: NID,
价值: '1234567890'
},
{
钥匙: 1P_JAR,
价值: '0987654321'
}
]
},
{
钥匙: follow_redirects,
价值: 真
},
{
钥匙: 成功状态代码,
价值: [303, 808, 909]
},
{
钥匙: http_method,
价值: 获取
}
{
钥匙: 内容
价值: base64EncodedPOSTBody
}
],
}
# 获取响应。
回应 = 要求.要求(
POST,
'https://realtime.oxylabs.io/v1/queries',
授权=(用户, pass1),
json=载荷,
)
# 返回的不是包含任务状态和结果 url 的响应,而是
# JSON 响应结果。
打印(回应.json())
<?php
$params = [
来源 => 普遍性,
'url'(网址 => 'https://stackoverflow.com/questions/tagged/python',
上下文 => [
[
钥匙 => session_id,
价值 => 1234567890abcdef
],
[
钥匙 => 标题,
价值 => [
接受语言 => en-US,
内容类型 => 应用程序/八字节流,
自定义标题 => 自定义标题内容
],
],
[
钥匙 => 饼干,
价值 => [
[钥匙 => NID, 价值 => '1234567890'],
[钥匙 => 1P_JAR, 价值 => '0987654321']
]
],
[
钥匙 => follow_redirects,
价值 => 真实
],
[
钥匙 => 成功状态代码,
价值 => [303, 808, 909]
],
[
钥匙 => http_method,
价值 => 获取
],
[
钥匙 => 内容,
价值 => base64EncodedPOSTBody
]
]
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://data.oxylabs.io/v1/queries");
curl_setopt($ch, curlopt_returntransfer, 1);
curl_setopt($ch, curlopt_postfields, json_encode($params));
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, curlopt_userpwd, "用户" . ":" . "pass1");
$headers = 矩阵();
$headers[] = "内容类型:应用程序/json";
curl_setopt($ch, curlopt_httpheader, $headers);
$result = curl_exec($ch);
回响 $result;
如果 (curl_errno($ch)) {
回响 错误: . curl_error($ch);
}
curl_close ($ch);
?>
# The whole string you submit has to be URL-encoded.
https://realtime.oxylabs.io/v1/queries?source=universal&url=https%3A%2F%2Fstackoverflow.com%2Fquestions%2Ftagged%2Fpython&access_token=12345abcde
并通过超级用户接口(SuperAPI):
# GET 请求可以如下所示:
curl -k \
-x http://realtime.oxylabs.io:60000 \
-用户:pass1 \
"https://stackoverflow.com/questions/tagged/python" \
-H "X-OxySERPs-Session-Id:1234567890abcdef" \
-H "X-OxySERPs-地理位置:印度" \
-H "接受语言:en-US" \
-H "内容类型:应用程序/八字节流 \
-H "自定义标题:自定义标题内容" \
-H "Cookie:NID=1234567890; 1P_JAR=0987654321" \
-H "X-Status-Code:303, 808, 909"
# POST 请求具有相同的结构,但包含一个指定为 POST 请求的参数:
curl -X POST \
-k \
-x http://realtime.oxylabs.io:60000 \
-用户:pass1 "https://stackoverflow.com/questions/tagged/python" \
-H "X-OxySERPs-Session-Id:1234567890abcdef" \
-H "X-OxySERPs-地理位置:印度" \
-H "自定义标题:自定义标题内容" \
-H "Cookie:NID=1234567890; 1P_JAR=0987654321" \
-H "X-Status-Code:303, 808, 909"
舶来品 要求
从 打印 舶来品 打印
# 定义代理口令。不要忘记在此处填写您的真实用户和密码。
代理 = {
http: 'http://user:[email protected]:60000',
https: 'https://user:[email protected]:60000',
}
回应 = 要求.要求(
GET,
'https://stackoverflow.com/questions/tagged/python',
授权=(用户, pass1),
核对=假的, # 或接受我们的证书。
代理=代理,
)
# 将结果页打印到 stdout
打印(回应.文本)
# 将返回的 HTML 保存为 result.html 文件
与 开(结果.html, 'w') 作为 f:
f.写道(回应.文本)
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://stackoverflow.com/questions/tagged/python");
curl_setopt($ch, curlopt_returntransfer, 1);
curl_setopt($ch, CURLOPT_PROXY, realtime.oxylabs.io:60000);
curl_setopt($ch, curlopt_proxyuserpwd, "用户" . ":" . "pass1");
curl_setopt($ch, curlopt_ssl_verifypeer, 错误);
curl_setopt($ch, curlopt_ssl_verifyhost, 错误);
$result = curl_exec($ch);
回响 $result;
如果 (curl_errno($ch)) {
回响 错误: . curl_error($ch);
}
curl_close ($ch);
?>
超级用户接口不支持 HTTP 方法
参数值
地理位置
支持的地理位置完整列表以 CSV 格式提供 这里.
"阿拉伯联合酋长国,
"阿尔巴尼亚",
"亚美尼亚,
"安哥拉",
"阿根廷",
"澳大利亚",
...
"乌拉圭",
"乌兹别克斯坦",
"委内瑞拉玻利瓦尔共和国,
"越南",
"南非",
"津巴布韦
HTTP_Method
通用爬虫支持两种 HTTP(S) 方法: 获取
(默认)和 职位
.
"GET",
"发布"
渲染
Universal Crawler 可渲染 Javascript 并返回渲染的 HTML 文档或 PNG 网页截图。
"html",
"png"
User_Agent_Type
下载完整列表 用户代理类型
JSON 中的值 这里.
[
{
"user_agent_type": "桌面",
"描述": "随机桌面浏览器用户代理"
},
{
"user_agent_type": "desktop_firefox",
"描述": "最新版桌面火狐浏览器的随机用户代理"
},
{
"user_agent_type": "桌面铬色",
"描述": "最新版桌面 Chrome 浏览器的随机用户代理"。
},
{
"user_agent_type": "桌面歌剧",
"描述": "最新版桌面 Opera 的随机用户代理"。
},
{
"user_agent_type": "桌面边缘",
"描述": "最新版桌面 Edge 的随机用户代理"。
},
{
"user_agent_type": "desktop_safari",
"描述": "最新版桌面 Safari 的随机用户代理"。
},
{
"user_agent_type": "移动",
"描述": "随机移动浏览器用户代理"
},
{
"user_agent_type": "mobile_android",
"描述": "最新版安卓浏览器的随机用户代理"
},
{
"user_agent_type": "mobile_ios",
"描述": "最新版 iPhone 浏览器的随机用户代理"。
},
{
"user_agent_type": "平板电脑",
"描述": "随机平板电脑浏览器用户代理"
},
{
"user_agent_type": "tablet_android",
"描述": "最新版安卓平板电脑的随机用户代理"
},
{
"user_agent_type": "tablet_ios",
"描述": "最新版 iPad 平板电脑的随机用户代理"。
}
]
账户状态
使用统计
您可以通过查询以下端点找到您的使用统计数据:
GET https://data.oxylabs.io/v2/stats
默认情况下,API 将返回所有时间的使用统计数据。添加 group_by=month
将返回月度统计数据,而 group_by=day
将返回每日数字。
此查询将返回所有时间的统计数据。您可以通过添加以下任一选项来查询每日和每月的使用量 group_by=day
或 group_by=month
curl --user user:pass1 'https://data.oxylabs.io/v2/stats'
舶来品 要求
从 打印 舶来品 打印
# 从统计终端获取响应。
回应 = 要求.要求(
方法=GET,
网址='https://data.oxylabs.io/v2/stats',
授权=(用户, pass1),
)
# 向 stdout 打印经过修饰的 JSON 响应。
打印(回应.json())
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://data.oxylabs.io/v2/stats");
curl_setopt($ch, curlopt_returntransfer, 1);
curl_setopt($ch, curlopt_customrequest, "GET");
curl_setopt($ch, curlopt_userpwd, "用户" . ":" . "pass1");
$result = curl_exec($ch);
回响 $result;
如果 (curl_errno($ch)) {
回响 错误: . curl_error($ch);
}
curl_close ($ch);
?>
输出示例
{
"数据": {
"来源": [
{
"实时结果计数": "90",
"结果数": "10",
"标题": "普遍"
}
]
},
"元": {
"group_by": 无效
}
}
限制
以下端点将提供您的每月承诺信息以及已使用的承诺额度:
GET https://data.oxylabs.io/v2/stats/limits
curl --user user:pass1 'https://data.oxylabs.io/v2/stats/limits'
舶来品 要求
从 打印 舶来品 打印
# 从统计终端获取响应。
回应 = 要求.要求(
方法=GET,
网址='https://data.oxylabs.io/v2/stats/limits',
授权=(用户, pass1),
)
# 向 stdout 打印经过修饰的 JSON 响应。
打印(回应.json())
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://data.oxylabs.io/v2/stats/limits");
curl_setopt($ch, curlopt_returntransfer, 1);
curl_setopt($ch, curlopt_customrequest, "GET");
curl_setopt($ch, curlopt_userpwd, "用户" . ":" . "pass1");
$result = curl_exec($ch);
回响 $result;
如果 (curl_errno($ch)) {
回响 错误: . curl_error($ch);
}
curl_close ($ch);
?>
输出示例
{
"每月要求承诺": 4500000,
"已用请求": 985000
}
响应代码
代码 | 现状 | 说明 |
---|---|---|
204 |
无内容 | 您正在尝试检索一项尚未完成的任务。 |
400 |
多种错误信息 | 请求结构错误,可能是参数拼写错误或值无效。响应体将显示更具体的错误信息。 |
401 |
未提供授权标头"/"授权标头无效"/"未找到客户端 | 缺少授权标头或登录凭证不正确。 |
403 |
禁止 | 您的帐户无法访问此资源。 |
404 |
未找到 | 您要查找的职位编号已不再可用。 |
429 |
请求太多 | 超出费率限制。请联系您的客户经理以提高限额。 |
500 |
未知错误 | 无法提供服务。 |
524 |
超时 | 无法提供服务。 |
612 |
未定义的内部错误 | 出了点问题,我们未能完成您提交的任务。您可以免费再试一次,因为我们不会向您收取任何费用。 有问题 工作。如果无效,请与我们联系。 |
613 |
重试次数过多后出现故障 | 我们曾尝试清除您提交的作业,但在达到重试限制后放弃了。您可以免费再试一次,因为我们不会向您收取任何费用。 有问题 工作。如果无效,请与我们联系。 |
参考资料
免责声明 这部分内容主要来自商家。如果商家不希望在我的网站上显示,请 联系我们 删除您的内容。
最后更新于 5 月 15, 2022