返回博客

网络爬虫 API 快速入门指南

网络爬虫 API 快速入门指南

Jolita Pundzaite

2021-12-21

Oxylabs 的网络爬虫 API 是一个数据爬虫 API,旨在从网站收集大量实时数据。这个网络抓取工具是一个值得信赖的解决方案,可从复杂目标收集信息,并确保抓取过程方便简单。网络爬虫 API 最适合于网站更改监控、欺诈防护和旅行费用监控等情况。

在本指南中,我们将解释网络爬虫API的运作方式,并指导您开始使用这一工具。

您能够通过网络爬虫 API 获得什么

  • 轻松集成 – 顺畅集成并可获得来自所选目标的任何数据点中的原始数据。

  • 轻松数据收集 – 别把时间花在代理管理 – 我们会帮您搞定。 

  • 无限的可扩展性 – Oxylabs 的代理池拥有超过 1.02 亿代理,因此不会限制您的请求。 

  • 企业级解决方案 – 信任 500 多名客户的满意度,并依靠 Oxylabs 作为您的主要数据提供者。

  • 24/7 全天候支持 – 我们的客户成功团队及时解答您的任何问题。

您会在仪表板上发现什么

网络爬虫API用户可以访问简便的仪表板,在这里您可以关注您的数据使用统计并对您的订阅细节进行跟踪。不仅如此,您还可通过仪表板联系我们的客户服务团队,无论什么时候都能获得帮助。

数据来源

网络爬虫API将提供大多数网站的页面HTML代码。您亦可使用JavaScript渲染功能,通过利用JavaScript动态加载内容的网站获取HTML。

网络爬虫API –它是如何运作的?

网络爬虫 API 是一个易于使用的工具,无需任何特殊的基础设施或资源。 

  1. 选择目标链接、地理位置和 JS 渲染参数

  2. 添加自定义标题和 cookies,或者让我们自己管理

  3. 提交 GET 或 POST 请求

  4. 通过 REST API 直接接收数据或转到云

身份验证

网络爬虫 API采用需要用户名和密码的基本 HrrP 身份认证。这是开始掌握该工具的最简单的方法。以下代码示例展示如何使用实时交付方法向https://ip.oxylabs.io 发送 GEr 请;,我们将在本文后面的内容中讨论这种方法。

curl --user "USERNAME:PASSWORD"'https://realtime.oxylabs.io/v1/queries' -H "Content-Type: application/json" -d '{"source": "universal", "url": "https://ip.oxylabs.io"}'

集成方法

您可以使用以下三种方法其中一种集成网络爬虫API:Push-Pull、Realtime和SuperAPI。现在我们了解每种方法的详细工作原理。

Push-Pull

Push-Pull 的优势在于其简单性,同时也是最可靠的数据交付方法。使用这种方法,您向我们提供您的工作参数,我们会为您的工作分配一个 id,可以用来在稍后从/results端点获取内容。您可以自己检查工作是否完成,或者设置一个接受 POST 请求的监听器,在这种情况下,一旦准备回收工作,我们会向您发送一个回调消息。

此外,Push-Pull方法还提供了以下功能:

  • 单一查询。我们的端点将处理一个关键字或 URL 的单一请求。工作 id 连同其他信息,将通过 API 确认消息发送给您。这个 id 将帮助您手动检查您的工作状态。 

  • 检查工作状态。如果您在查询中包含 callback_url ,我们会在抓取任务完成后向您提供一个数据链接。如果您的查询没有 callback_url,您需要使用响应消息 rel:self 下 href 中的 URL,手动验证工作状态。 

  • 检索工作内容。一旦工作内容准备就绪,您便可使用 rel:results下 href 中的 URL 获取数据。

  • 批量查询。网络爬虫 API 可以执行多个关键字,每批最多可执行 1000 个关键字。为此,您必须发布查询参数作为 JSON 主体的数据。系统会将每个关键字作为一个单独的请求进行处理,并为每个请求返回唯一的工作 id。 

  • 获取通知者 IP 地址列表。为了将向您发送回调消息的 IP 列入白名单,您应该 GET这个端点。

  • 上传至存储器。抓取的内容默认存储在我们的数据库中。然而,我们配备一个自定义的存储功能,让您将结果存储在您的云存储中,这样您就无需进行任何额外的请求来获取结果 – 任何内容都会直接转入您的存储。 

  • 回调。当数据收集任务完成后,我们会向您的计算机发送一个回调请求,并向您提供一个 URL,以获得抓取的数据。 

在本快速入门指南中,我们提供了一个示例,介绍如何使用推拉集成方法和 cURL库与网络爬虫 API 进行交互以提出请求。我们将从测试网站 https://ip.oxylabs.io 获取内容,该网站会返回提出请求的 IP 地址。我们将使用美国地理定位。

单个查询请求的示例:

curl --user "USERNAME:PASSWORD"'https://data.oxylabs.io/v1/queries' -H "Content-Type: application/json" -d '{"source": "universal", "url": "https://ip.oxylabs.io", "geo_location": "United States"}'

初始响应输出的样例:

{
  "callback_url": null,
  "client_id": 1,
  "created_at": "2021-09-30 12:40:32",
  "domain": "io",
  "geo_location": "United States",
  "id": "6849322054852825089",
  "limit": 10,
  "locale": null,
  "pages": 1,
  "parse": false,
  "parser_type": null,
  "render": null,
  "url": "https://ip.oxylabs.io",
  "query": "",
  "source": "universal",
  "start_page": 1,
  "status": "pending",
  "storage_type": null,
  "storage_url": null,
  "subdomain": "ip",
  "content_encoding": "utf-8",
  "updated_at": "2021-09-30 12:40:32",
  "user_agent_type": "desktop",
  "session_info": null,
  "statuses": [],
  "_links": [
    {
      "rel": "self",
      "href": "http://data.oxylabs.io/v1/queries/6849322054852825089",
      "method": "GET"
    },
    {
      "rel": "results",
      "href": "http://data.oxylabs.io/v1/queries/6849322054852825089/results",
      "method": "GET"
    }
  ]
}

最初的响应表明,我们的系统中已经创建了专门用于爬取的网站。这意味着该网站还会显示所有作业参数和链接,借此检查作业是否完成,或从哪里下载内容。为了检查作业是否处于"status": "done", 我们可以使用来自 ["_links"][0]["href"]的链接 http://data.oxylabs.io/v1/queries/6849322054852825089。

如何检查作业状态的示例:

curl --user "USERNAME:PASSWORD"
'http://data.oxylabs.io/v1/queries/6849322054852825089'

该响应将包含与初始响应相同的数据。如果作业处于"status": "done", 我们可以使用来自 ["_links"][1]["href"] 的链接http://data.oxylabs.io/v1/queries/6849322054852825089/results来检索内容。

如何检索数据的示例:

curl --user "USERNAME:PASSWORD"
'http://data.oxylabs.io/v1/queries/6849322054852825089/results'

响应数据输出的样例:

{
    "results": [
      {
        "content": "24.5.203.132\n", # Actual content from https://ip.oxylabs.io
        "created_at": "2021-09-30 12:40:32",
        "updated_at": "2021-09-30 12:40:35",
        "page": 1,
        "url": "https://ip.oxylabs.io",
        "job_id": "6849322054852825089",
        "status_code": 200
      }
    ]
}

Realtime

凭借这种方法,您可以直接在同一个开放的 HTTPS 连接上发送请求并接收数据。

请求样例:

curl --user
"USERNAME:PASSWORD"'https://realtime.oxylabs.io/v1/queries' -H
"Content-Type: application/json" -d '{"source": "universal", "url":
"https://ip.oxylabs.io", "geo_location": "United States"}'

将在开放连接上返回的响应体示例:

{
    "results": [
      {
        "content": "24.5.203.132\n", # Actual content from https://ip.oxylabs.io
        "created_at": "2021-09-30 12:40:32",
        "updated_at": "2021-09-30 12:40:35",
        "page": 1,
        "url": "https://ip.oxylabs.io",
        "job_id": "6849322054852825089",
        "status_code": 200
      }
    ]
}

SuperAPI

SuperAPI 不接受域名和搜索查询等参数,而只接受完全成型的 URL。如上所述,您可以在请求标头中发送额外信息,例如位置和语言。

使用我们的输入节点作为代理,用网络爬虫 API 凭据进行验证并忽略证书。数据将在同一个开放的连接上到达您的手中。

Python 编程语言中的 SuperAPI 代码样例:

curl -k -x realtime.oxylabs.io:60000 -U USERNAME:PASSWORD -H
"X-Oxylabs-Geo-Location: United States" "https://ip.oxylabs.io"

参数*

*所有参数将在购买产品后提供。

参数 描述 默认值
source 数据来源
url 转到通用页面的直接 URL(链接)
user_agent_type 设备类型和浏览器。完整列表可以在此处查阅。 desktop
geo_location 用于检索数据的代理地理位置。所支持位置的完整列表可以在此处查阅。
locale 区域设置,如 Accept-Language 标头所预期。
render 启用 JavaScript 渲染。当目标需要 JavaScript 加载内容时使用它。只通过 Push-Pull(又称回调)回调)方法工作。这个参数有两个可用值:html(获得原始输出)和 png(获得一个 Base64 编码的屏幕截图)。
content_encoding 如果您要下载图片,请添加这个参数。此处了解更多信息。 base64
context: content Base64 编码的POST请求体。只有当http_method被设置为post时,它才有用。
context:cookies 传递您自己的 cookies。
context:follow_redirects 指明您是否希望爬虫跟踪重定向(带有目标 URL 的 3xx 响应)以获得重定向链末端的 URL 内容。 true
context:headers 传递您自己的消息头。
context:http_method 如果您想通过万能爬虫向您的目标 URL 发出post请求,请将其设置为 post。 GET
context:session_id 如果您想在多个请求中使用同一个代理,则可使用这个参数。只要把您的会话设置成您喜欢的任何字符串,我们将为这个 ID 分配一个代理,保留长达 10 分钟。在此之后,如果您用相同的会话 ID 提出另一个请求,一个新的代理将被分配给这个特定的会话 ID。
context:successful_status_codes 定义一个(或几个)自定义的 HTTP 响应代码,在这个代码,我们应该认为抓取成功并将内容返回给您。如果您希望我们返回 503 错误页面或其他一些非标准情况,则可能有用。
callback_url 您的回调端点的 URL。
storage_type 存储器服务提供者。我们支持 Amazon S3 和谷歌云存储器。这些存储器提供者的 storage_type 参数值相应为 s3 和gcs。完整建置可以在 Upload to Storage 页面查阅。这个功能只通过 Push-Pull(回调)方法工作。
storage_url 您的存储桶名称。只通过 Push-Pull(回调)方式工作。

响应代码

响应 错误信息 描述
204 无内容 您正试图检索一项尚未完成的工作。
400 多个错误信息 错误请求结构可能是参数拼写错误或无效值。响应体将有一个更具体的错误信息。
401 “未提供授权头”/“无效授权头”\“未找到客户” 缺少授权头或登录凭证不正确。
403 禁用 您的账户无法访问此资源。
404 未找到 您正在寻找的工作编号已不存在。
429 请求次数太多 超出了速率上限。请联系您的客户经理以增加上限。
500 未知错误 服务不可用。
524 服务不可用 服务不可用。
612 未定义的内部错误 出了点问题,我们没能处理您提交的工作。您可以重试一次,但无需支付额外费用,因为我们不对未能完成的工作收费。如果这不起作用,请与我们联系。
613 重试太多次后出现故障 我们尝试抓取您提交的工作,但在达到我们的重试上限后取消。

总结

网络爬虫 API 是一个强大工具,允许您从几乎任何您需要的目标中收集大量实时数据。集成方法有几种,如 Push-Pull、Realtime 和 SuperAPI,可用于无缝数据传输。与其他 Oxylabs 产品一样,网络爬虫 API 具有额外好处,包括广泛的仪表板和全天候客户支持。 

我们希望本指南使网络爬虫API的功能更易理解,并涵盖了有关该产品的所有问题。然而,如果您对该工具的任何方面仍不确定,请参阅我们的文档了解深入的技术细节,或通过support@oxylabs.io或在线聊天与我们联系。

关于作者

Jolita Pundzaite

产品营销经理

Jolita Pundzaite 在 Oxylabs 担任一名产品营销经理。拥有近 10 年的营销和技术经验,Jolita 喜欢称自己为“万事通”,不断寻找通过技术改善人们生活的各种方法。她喜欢阅读,远行,在厨房里做实验,或者骑着滑雪板从山上滑下来。当她不工作时,您很可能会发现 Jolita 进行一些 HIIT 锻炼,或者干脆在冰洞里发呆来测试她的极限。

Oxylabs博客上的所有信息均按“原样”提供,仅供参考。对于您使用Oxylabs博客中包含的任何信息或其中可能链接的任何第三方网站中包含的任何信息,我们不作任何陈述,亦不承担任何责任。在从事任何类型的抓取活动之前,请咨询您的法律顾问,并仔细阅读特定网站的服务条款或取得抓取许可。

在这篇文章


  • 您能够通过网络爬虫 API 获得什么

  • 您会在仪表板上发现什么

  • 数据来源

  • 网络爬虫API –它是如何运作的?

  • 身份验证

  • 集成方法

  • 参数*

  • 响应代码

  • 总结

选择Oxylabs®,业务更上一层楼


隐私政策

oxylabs.cn© 2022 保留所有权利©