你知道如何使用 OxyLabs Real-time Crawler for Yandex 吗?这是 OxyLabs 官方最全面的介绍。
快速入门
Real-Time Crawler 专为重型数据检索操作而设计。你可以使用 Real-Time Crawler 访问各种 Yandex 网页。它能毫不费力地从搜索引擎中提取网络数据,不会出现任何延迟或错误。
用于 Yandex 的实时抓取器 基本 HTTP 身份验证 需要发送用户名和密码。
这是迄今为止开始使用 Yandex 实时爬虫的最快方法。您将发送一个查询 阿迪达斯
至 搜索
使用 实时 整合方法。不要忘记替换 用户名
和 密码
使用代理用户凭据。
curl --user "USERNAME:PASSWORD" 'https://realtime.oxylabs.io/v1/queries' -H "Content-Type: application/json" -d '{"source":"yandex_search", "domain":"com","query":"adidas"}'
如果您有任何本文件未涉及的问题,请联系您的客户经理或我们的支持人员,地址是 [email protected].
整合方法
Real-Time Crawler for Yandex 支持三种集成方法,它们都有各自独特的优势:
- 推拉式.使用这种方法,现在需要与我们的端点保持活动连接,以检索数据。在发出请求后,我们的系统会在任务完成后自动 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 "Content-Type: application/json" -d '{"source":"yandex_search", "domain":"com","query":"adidas", "callback_url":"https://your.callback.url","storage_type":"s3","storage_url":"your_bucket_name"}'
API 将以 JSON 格式响应查询信息,并将其打印在响应体中,与此类似:
{ "callback_url":"https://your.callback.url"、 "client_id":5, "created_at":"2019-10-01 00:00:01", "域":"com"、 "geo_location": null、 "id":"12345678900987654321", "限制":10, "locale": null、 "pages":1, "parse": false、 "render": null、 "查询":"adidas"、 "来源":"yandex_search"、 "start_page":1, "状态":"pending"、 "storage_type":"s3", "storage_url":"YOUR_BUCKET_NAME/12345678900987654321.json", "subdomain":"www"、 "updated_at":"2019-10-01 00:00:01", "user_agent_type":"desktop"、 "_链接":[ { "rel":"self"、 "href":"http://data.oxylabs.io/v1/queries/12345678900987654321", "method":"GET" }, { "rel":"results"、 "href":"http://data.oxylabs.io/v1/queries/12345678900987654321/results", "method":"GET" } ] }
检查工作状态
如果您的查询有 回调URL
一旦完成刮擦任务,我们将向您发送一条包含内容链接的信息。但是,如果没有 回调URL
在查询中,您需要自己检查任务状态。为此,您需要使用 href
根据 rel
:自我
在您向我们的 API 提交查询后收到的响应信息中。它应该与下面的内容相似: http://data.oxylabs.io/v1/queries/12345678900987654321
.
GET https://data.oxylabs.io/v1/queries/{id}
查询该链接将返回工作信息,包括其 地位
.有 3 种可能 地位
价值观
未决 |
任务仍在队列中,尚未完成。 |
完成的 |
任务完成后,您可以通过在 href 根据 rel :成果 : http://data.oxylabs.io/v1/queries/12345678900987654321/results |
有问题 |
任务出了问题,我们无法完成,很可能是目标网站方面的服务器出错。 |
curl --user user:pass1 'http://data.oxylabs.io/v1/queries/12345678900987654321'
API 将在响应正文中打印 JSON 格式的查询信息。请注意,任务 地位
改为 完成的
.现在您可以通过查询 http://data.oxylabs.io/v1/queries/12345678900987654321/results
.
您还可以看到任务已被 updated_at
2019-10-01 00:00:15
- 查询需要 14 秒才能完成。
{ "client_id":5, "created_at":"2019-10-01 00:00:01", "域":"com"、 "geo_location": null、 "id":"12345678900987654321", "限制":10, "locale": null、 "pages":1, "parse": false、 "render": null、 "查询":"adidas"、 "来源":"yandex_search"、 "start_page":1, "状态":"done"、 "子域":"www"、 "updated_at":"2019-10-01 00:00:15", "user_agent_type":"desktop"、 "_链接":[ { "rel":"self"、 "href":"http://data.oxylabs.io/v1/queries/12345678900987654321", "method":"GET" }, { "rel":"results"、 "href":"http://data.oxylabs.io/v1/queries/12345678900987654321/results", "method":"GET" } ] }
检索工作内容
通过检查作业状态或接收我们的回调,一旦知道作业已准备就绪,您就可以使用以下 URL 获取作业 href
根据 rel
:成果
在我们的初始响应或回调信息中。看起来应该类似于下面这样: http://data.oxylabs.io/v1/queries/12345678900987654321/results
.
GET https://data.oxylabs.io/v1/queries/{id}/results
通过设置 "任务状态",可以自动检索结果,而无需定期检查任务状态。 回调 服务。用户需要指定运行回调服务的服务器的 IP 或域。当我们的系统完成一项任务时,它将向所提供的 IP 或域发送一条信息,回调服务将下载结果,如 回调实现示例.
curl --user user:pass1 'http://data.oxylabs.io/v1/queries/12345678900987654321/results'
API 将返回工作内容:
{ "结果":[ { "content":"<! 内容 ", "created_at":"2019-10-01 00:00:01", "更新时间":"2019-10-01 00:00:15", "页":1, "url":"https://www.yandex.com/search?q=adidas&hl=en&gl=US"、 "job_id":"12345678900987654321", "status_code":200 } ] }
回调
回调是一个 职位
我们会向您的机器发送请求,告知数据提取任务已完成,并提供下载刮擦内容的 URL。这意味着您不再需要 检查工作状态 手动操作。一旦数据到齐,我们会通知您,您现在需要做的就是 取回.
# 请查看 Python 和 PHP 代码示例。
回调输出示例
{ "created_at":"2019-10-01 00:00:01", "updated_at":"2019-10-01 00:00:15", "locale":null、 "client_id":163、 "user_agent_type": "desktop"、 "来源": "yandex_search"、 "页面":1、 "子域": "www"、 "status": "done"、 "start_page":1、 "parse":0、 "render":null、 "priority":0、 "ttl":0、 "origin": "api"、 "persist":true、 "id":"12345678900987654321", "callback_url": "http://your.callback.url/"、 "query": "adidas"、 "domain": "com"、 "limit":10、 "geo_location":null、 {...} "_links":[ { "href":"https://data.oxylabs.io/v1/queries/12345678900987654321", "method": "GET"、 "rel": "self" }, { "href":"https://data.oxylabs.io/v1/queries/12345678900987654321/results", "method": "GET"、 "rel": "results" } } ], }
批量查询
实时爬虫还支持执行多个关键字,每批最多可执行 1,000 个关键字。以下端点将向提取队列提交多个关键词。
邮寄 https://data.oxylabs.io/v1/queries/batch
您需要在 JSON 主体中将查询参数作为数据发布。
系统会将每个关键词作为一个单独请求处理。如果您提供了回调 URL,您将为每个关键字收到单独的调用。否则,我们的初始响应将包含工作 本我
的所有关键字。例如,如果您发送了 50 个关键字,我们将返回 50 个唯一的职位。 本我
s.
重要! 询问
是唯一一个可以有多个值的参数。所有其他参数对于该批次查询都是一样的。
curl --user user:pass1 'https://data.oxylabs.io/v1/queries/batch' -H 'Content-Type: application/json' -d '@keywords.json -d'@keywords.json'(关键词
keywords.json
内容:
{ "query":[ "阿迪达斯"、 "耐克"、 "蕾博克" ], "来源":"yandex_search"、 "域":"com"、 "callback_url":"https://your.callback.url" }
API 将以 JSON 格式响应查询信息,并将其打印在响应体中,与此类似:
{ "查询":[ { "callback_url":"https://your.callback.url"、 {...} "created_at":"2019-10-01 00:00:01", "域":"com"、 "id":"12345678900987654321", {...} "查询":"阿迪达斯"、 "来源":"yandex_search"、 {...} "rel":"results"、 "href":"http://data.oxylabs.io/v1/queries/12345678900987654321/results", "method":"GET" } ] }, { "callback_url":"https://your.callback.url"、 {...} "created_at":"2019-10-01 00:00:01", "域":"com"、 "id":"12345678901234567890", {...} "查询":"NIKE"、 "来源":"yandex_search"、 {...} "rel":"results"、 "href":"http://data.oxylabs.io/v1/queries/12345678901234567890/results", "method":"GET" } ] }, { "callback_url":"https://your.callback.url"、 {...} "created_at":"2019-10-01 00:00:01", "域":"com"、 "id":"01234567899876543210", {...} "查询":"reebok"、 "来源":"yandex_search"、 {...} "rel":"results"、 "href":"http://data.oxylabs.io/v1/queries/01234567899876543210/results", "method":"GET" } ] } ] }
获取通知程序 IP 地址列表
您可能希望将向您发送回调信息的 IP 列入白名单,或为其他目的获取这些 IP 的列表。这可以通过 获取
在这个端点上: https://data.oxylabs.io/v1/info/callbacker_ips
.
curl --user user:pass1 'https://data.oxylabs.io/v1/info/callbacker_ips'
API 将返回向您的系统发出回调请求的 IP 列表:
{ "ips":[ "x.x.x.x"、 "y.y.y.y" ] }
上传到存储器
默认情况下,RTC 任务结果存储在我们的数据库中。这意味着您需要查询我们的结果端点并自行检索内容。自定义存储功能允许您将结果存储在自己的云存储中。该功能的优势在于,您无需为了获取结果而发出额外请求,所有内容都会直接存储到您的存储桶中。
我们支持亚马逊 S3 和谷歌云存储。如果您想使用其他类型的存储,请联系您的客户经理,讨论功能交付时间表。
亚马逊 S3
要将作业结果上传到 Amazon S3 存储桶,请为我们的服务设置访问权限。为此,请访问 https://s3.console.aws.amazon.com/ > S3 > 存储 > 桶名称(如果没有,请新建) > 权限 > 桶策略
您可以在此找到水桶政策 JSON 或右侧的代码示例区。不要忘记在 您的邮筒名称
.通过该策略,我们可以向您的邮筒写入内容,允许您访问上传的文件,并了解邮筒的位置。
谷歌云存储
要将作业结果上传到您的 Google Cloud Storage 存储桶,请为我们的服务设置特殊权限。为此,请使用 存储.对象.创建
权限并将其分配给 Oxylabs 服务帐户电子邮件 [email protected]
.
使用方法
要使用此功能,请在请求中指定两个附加参数。了解更多信息 这里.
上传路径如下 YOUR_BUCKET_NAME/job_ID.json
.您可以在提交请求后从我们收到的回复正文中找到职位 ID。在 本例 工作编号为 12345678900987654321
.
{ "版本":"2012-10-17", "Id":"Policy1577442634787", "声明":[ { "Sid":"Stmt1577442633719"、 "效果":"允许"、 "校长":{ "AWS":"arn:aws:iam::324311890426:user/oxylabs.s3.uploader" }, "Action":"s3:GetBucketLocation"、 "资源":"arn:aws:s3:::YOUR_BUCKET_NAME" }. }, { "Sid":"Stmt1577442633719"、 "效果":"允许"、 "校长":{ "AWS":"arn:aws:iam::324311890426:user/oxylabs.s3.uploader" }, "Action":[ "s3:PutObject"、 "s3:PutObjectAcl"。 ], "资源":"arn:aws:s3:::YOUR_BUCKET_NAME/*"。 } ] }
实时
数据提交方式与推拉方式相同,但在实时情况下,我们将在连接打开时返回内容。您向我们发送查询,连接保持打开,我们检索内容并发送给您。处理的端点如下:
邮寄 https://realtime.oxylabs.io/v1/queries
开放连接的超时限制为 150 秒,因此在极少数负载较重的情况下,我们可能无法确保将数据发送给您。
您需要在 JSON 主体中将查询参数作为数据发布。详情请参阅示例。
curl --user user:pass1 'https://realtime.oxylabs.io/v1/queries' -H "Content-Type: application/json" -d '{"source":"yandex_search", "domain":"com", "query":"adidas"}'
打开连接时将返回的响应体示例:
{ "结果":[ { "content":" 内容 " "created_at":"2019-10-01 00:00:01", "更新时间":"2019-10-01 00:00:15", "id": null、 "page":1, "url":"https://www.yandex.com/search?q=adidas&hl=en&gl=US"、 "job_id":"12345678900987654321", "status_code":200 } ] }
超级用户接口
如果您曾经使用过普通代理进行数据搜刮,那么集成 SuperAPI 传输方法将轻而易举。只需将我们的入口节点用作代理,使用实时爬虫凭据进行授权,并忽略证书即可。在 cURL
这是 -k
或 --不安全
.您的数据将通过开放连接发送给您。
GET realtime.oxylabs.io:60000
超级用户接口只支持少量参数,因为它 仅适用于 直接 数据源 其中提供了完整的 URL。这些参数应作为标头发送。这是可接受的参数列表:
X-OxySERPs-User-Agent-Type |
虽然无法指明特定的 User-Agent,但您可以让我们知道您使用的浏览器和平台。支持的用户代理列表如下所示 这里. |
X-OxySERPs-地理位置 |
Yandex 中的地理位置 rstr 格式 |
如果您在设置超级用户接口时需要帮助,请致电 [email protected].
curl -k -x realtime.oxylabs.io:60000 -U user:pass1 -H "X-OxySERPs-User-Agent-Type: desktop_chrome" -H "X-OxySERPs-Geo-Location:15550" "https://yandex.com/search/?text=nike"
内容类型
实时爬虫返回 原始HTML.
数据来源
使用实时爬虫从 Yandex 检索数据有两种方法。您可以通过以下方式向我们提供完整的 URL 直接或者您可以通过专门构建的数据源--"...... "来指定参数。 搜索.
从技术上讲,这不是一种内容类型,但实时抓取器能够在抓取时呈现 JavaScript。这在某些 Yandex 页面中可能是必要的。在 渲染 JS
将指示特定数据源是否可以在启用 JavaScript 的情况下进行刮擦。
如果您不确定选择哪种方式,请给我们留言 [email protected] 或联系您的客户经理。
直接
yandex
源的目的是检索各种 Yandex 页面的直接 URL 内容。这意味着您可以向我们提供所需的 Yandex 页面的直接 URL,而无需发送多个参数。我们不会删除任何参数或以任何其他方式更改您的 URL。
查询参数
参数 | 说明 | 默认值 |
消息来源 | 数据来源 | yandex |
网址 | 指向 Yandex 页面的直接 URL(链接 | – |
用户代理类型 | 设备类型和浏览器。完整列表如下 这里。 | 桌面 |
给予 | 启用 JavaScript 渲染。在目标需要 JavaScript 加载内容时使用。仅适用于推拉(又称回调)方法。该参数有两个可用值:html(获取原始输出)和 png(获取 Base64 编码的截图)。 | |
回调URL | 回调端点的 URL | – |
存储类型 | 存储服务提供商。我们支持 Amazon S3 和 Google Cloud Storage。这些存储服务提供商的 storage_type 参数值分别为 s3 和 gcs。完整的实现可以在 上传到存储器 页。此功能只能通过推拉(回调)方法使用。 | – |
存储URL | 您的存储桶名称。仅适用于推挽(回调)方法。 | – |
- 所需参数 |
在本例中,应用程序接口将检索 Yandex 搜索关键字 耐克
推拉法
curl --user user:pass1 'https://data.oxylabs.io/v1/queries' -H "Content-Type: application/json" -d '{"source":"yandex", "url":"https://yandex.com/search/?text=nike&"}'
以下是实时模式下的相同示例:
curl --user user:pass1 'https://realtime.oxylabs.io/v1/queries' -H "Content-Type: application/json" -d '{"source":"yandex", "url":"https://yandex.com/search/?text=nike&"}'
并通过超级用户接口(SuperAPI):
curl -k -x realtime.oxylabs.io:60000 -U user:pass1 "https://yandex.com/search/?text=nike&"
搜索
搜索
源用于检索 Yandex 搜索结果(SERP)。
查询参数
参数 | 说明 | 默认值 |
消息来源 | 数据来源 | 搜索 |
领域 | 域名本地化。可用域名:com、ru、ua、by、kz、tr | 网 |
询问 | UTF 编码的关键字 | – |
start_page | 起始页码 | 1 |
页面 | 要检索的页数 | 1 |
限额 | 每页要检索的结果数量 | 10 |
地点 | 语言。可用语言:en、ru、by、fr、de、id、kk、tt、tr、uk。 | – |
地理位置 | Yandex rstr 格式的地理位置 | – |
用户代理类型 | 设备类型和浏览器。完整列表如下 这里。 | 桌面 |
回调URL | 回调端点的 URL | – |
存储类型 | 存储服务提供商。我们支持 Amazon S3 和 Google Cloud Storage。这些存储服务提供商的 storage_type 参数值分别为 s3 和 gcs。完整的实现可以在 上传到存储器 页。此功能只能通过推拉(回调)方法使用。 | – |
存储URL | 您的存储桶名称。仅适用于推挽(回调)方法。 | – |
- 所需参数 |
API 向 yandex.com
检索关键字从第 11 到第 20 的搜索结果页面 阿迪达斯
.API 将向 your.callback.url
包含 URL,以便在数据检索任务成功完成后下载原始 HTML 输出。这就是推拉式:
curl --user user:pass1 'https://data.oxylabs.io/v1/queries' -H "Content-Type: application/json" -d '{"source":"yandex_search", "domain":"com", "query":"adidas", "start_page":11, "pages":10, "callback_url":"https://your.callback.url"}'
以下是实时模式下的相同示例:
curl --user user:pass1 'https://realtime.oxylabs.io/v1/queries' -H "Content-Type: application/json" -d '{"source":"yandex_search", "domain":"com", "query":"adidas", "start_page":11, "pages":10, "callback_url":"https://your.callback.url"}'
参数值
用户代理
下载完整列表 用户代理类型
JSON 中的值 这里.
[ { "user_agent_type":"桌面"、 "描述":"随机桌面浏览器用户代理" }, { "user_agent_type":"desktop_firefox"、 "描述":"最新版桌面火狐浏览器的随机用户代理"。 }, { "user_agent_type":"desktop_chrome"、 "description":"最新版桌面 Chrome 浏览器的随机用户代理"。 }, { "user_agent_type":"desktop_opera"、 "description":"最新版本桌面 Opera 的随机用户代理"。 }, { "user_agent_type":"desktop_edge"、 "description":"桌面边缘最新版本之一的随机用户代理"。 }, { "user_agent_type":"desktop_safari"、 "description":"桌面 Safari 最新版本之一的随机用户代理"。 }, { "user_agent_type":"mobile"、 "description":"随机移动浏览器用户代理" }, { "user_agent_type":"mobile_android"、 "description"(描述):"最新版本安卓浏览器的随机用户代理"。 }, { "user_agent_type":"mobile_ios"、 "描述":"最新版本 iPhone 浏览器的随机用户代理"。 }, { "user_agent_type":"平板电脑"、 "描述":"随机平板电脑浏览器用户代理" }, { "user_agent_type":"tablet_android"、 "描述":"最新版本安卓平板电脑的随机用户代理"。 }, { "user_agent_type":"tablet_ios"、 "description":"最新版本 iPad 平板电脑的随机用户代理"。 } ]
账户状态
使用统计
您可以通过查询以下端点找到您的使用统计数据:
GET https://data.oxylabs.io/v1/stats
默认情况下,API 将返回所有时间的使用统计数据。添加 group_by=month
将返回月度统计数据,而 group_by=day
将返回每日数字。
该查询将返回所有时间的统计数据。您可以通过添加 group_by=day
或 group_by=month
curl --user user:pass1 'https://data.oxylabs.io/v1/stats'
输出示例
{ "数据":{ "sources":[ { "realtime_results_count":"90", "results_count":"10", "标题":"yandex }, { "realtime_results_count":"19", "results_count":"87", "标题":"yandex_search } ] }, "元":{ "group_by": null } }
限制
以下终端将提供您的每月承诺信息以及已使用的金额:
GET https://data.oxylabs.io/v1/stats/limits
curl --user user:pass1 'https://data.oxylabs.io/v1/stats/limits'
输出示例
{ "monthly_requests_commitment":4500000, "used_requests":985000 }
响应代码
代码 | 现状 | 说明 |
---|---|---|
204 |
无内容 | 您正在尝试检索一项尚未完成的任务。 |
400 |
多种错误信息 | 请求结构错误,可能是参数拼写错误或值无效。响应体将显示更具体的错误信息。 |
401 |
未提供授权标头"/"授权标头无效"/"未找到客户端 | 缺少授权标头或登录凭证不正确。 |
403 |
禁止 | 您的帐户无法访问此资源。 |
404 |
未找到 | 您要查找的职位编号已不再可用。 |
429 |
请求太多 | 超出费率限制。请联系您的客户经理以提高限额。 |
500 |
未知错误 | 无法提供服务。 |
524 |
超时 | 无法提供服务。 |
612 |
未定义的内部错误 | 出了点问题,我们未能完成您提交的任务。您可以免费再试一次,因为我们不会向您收取任何费用。 有问题 工作如果还不行,请联系我们。 |
613 |
重试次数过多后出现故障 | 我们曾尝试清除您提交的作业,但在达到重试限制后放弃了。您可以免费再试一次,因为我们不会向您收取任何费用。 有问题 工作如果还不行,请联系我们。 |
云存储上传响应代码:
代码 | 现状 | 说明 |
---|---|---|
10001 |
意外异常 | 发生了严重的错误。我们可能已经知道,并正在修复。无论如何,请告诉我们。 |
13000 |
上传成功 | 一切顺利! |
13001 |
上传失败 | 我们无法上传您的工作结果。 |
13102 |
没有这样的道路 | 我们找不到这样名字的水桶。请仔细检查。 |
13103 |
拒绝访问 | Bucket 没有所需的权限。要了解如何授予我们必要的权限,请参阅 这里. |
参考资料
免责声明 这部分内容主要来自商家。如果商家不希望在我的网站上显示,请 联系我们 删除您的内容。
最后更新于 5 月 16, 2022