Oxylabs Real-Time Crawler

如何使用 OxyLabs 实时爬虫 [第 2 部分]:用于 Yandex 的实时爬虫

你知道如何使用 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 > 存储 > 桶名称(如果没有,请新建) > 权限 > 桶策略

Real-Time Crawler for Yandex Upload to Storage1

您可以在此找到水桶政策 JSON 或右侧的代码示例区。不要忘记在 您的邮筒名称.通过该策略,我们可以向您的邮筒写入内容,允许您访问上传的文件,并了解邮筒的位置。

谷歌云存储

要将作业结果上传到您的 Google Cloud Storage 存储桶,请为我们的服务设置特殊权限。为此,请使用 存储.对象.创建 权限并将其分配给 Oxylabs 服务帐户电子邮件 [email protected].

Real-Time Crawler for Yandex Upload to Storage2

Real-Time Crawler for Yandex Upload to Storage3

使用方法

要使用此功能,请在请求中指定两个附加参数。了解更多信息 这里.

上传路径如下 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] 或联系您的客户经理。


直接

Real-Time Crawler for Yandex Direct

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&"

Real-Time Crawler for Yandex Search

搜索 源用于检索 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 您的存储桶名称。仅适用于推挽(回调)方法。
   - 所需参数
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

您推荐代理服务吗?

点击奖杯即可颁奖!

平均评分 5 /5.计票: 1

目前没有投票!成为第一个给本帖评分的人。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

滚动到顶部