网络爬虫 (Web Crawler)

介绍

网络爬虫是一项爬虫API功能,可以让您爬取任何网站,选择有用的内容,并将其批量发送给您。您可以使用网络爬虫来执行URL搜索,爬取一个网站的所有页面,查找一个域名中的所有URL,以及用于其他目的。

下列教程将指导您完成网络爬虫的工作流程,展示了从一个电商网站检索公共数据的过程。

如何抓取网站:分步指南

网络爬虫会使用需要发送用户名和密码的基本 HTTP 身份认证

在使用网络爬虫之前,请仔细阅读此文档中筛选器使用统计部分有关于筛选器如何运作,以及使用此功能时您可能如何被收取费用的内容。

然后,逐渐熟悉可用的输入参数API 端点

请阅读集成部分,了解请求模板和模式。

如果您不知所措,并希望获得指导, 请通过官网微信、QQ,或24/7实时对话联系我们。

端点

网络爬虫有许多您可以用来控制服务的端点:启动停止恢复您的作业,获取作业信息,并获得结果

创建新作业

使用这个端点来启动一项新的网络爬虫作业。

  • 端点: https://ect.oxylabs.io/v1/jobs

  • 方法: POST

  • 身份验证: Basic

  • 请求标头: Content-Type: application/json

承载内容示例:

{
  "url": "https://example.com",
  "filters": {
    "crawl": [".*"],
    "process": [".*"],
    "max_depth": -1
  },
  "scrape_params": {
    "source": "universal",
    "user_agent_type": "desktop"
  },
  "output": {
    "type_": "sitemap"
  },
  "upload": {
    "storage_type": "s3",
    "storage_url": "http://s3.amazonaws.com/{bucket_name}/"
    },
  "context": {
    "follow_amazon_deals": false
  }
}

示例响应:

{
  "id": "10374369707989137859",
  "client": "username",
  "job_params": {
    "url": "https://example.com",
    "filters": {
      "crawl": [".*"],
      "process": [".*"],
      "max_depth": -1
    },
    "scrape_params": {
      "source": "universal",
      "geo_location": null,
      "user_agent_type": "desktop",
      "render": null
    },
    "output": {
      "type": "sitemap",
      "selector": null
    },
    "upload": {
      "storage_type": "s3",
      "storage_url": "http://s3.amazonaws.com/{bucket_name}/"
    },
    "context": {
      "follow_amazon_deals": false
    }
  },
  "_links": [
    {
      "rel": "self",
      "href": "http://ect.oxylabs.io/v1/jobs/10374369707989137859",
      "method": "GET"
    },
    {
      "rel": "stop-indexing",
      "href": "http://ect.oxylabs.io/v1/jobs/10374369707989137859/stop-indexing",
      "method": "POST"
    }
  ],
  "events": [],
  "created_at": "2021-11-19 14:32:01",
  "updated_at": "2021-11-19 14:32:01"
}

停止作业

使用这个端点来停止某项作业。

  • 端点: https://ect.oxylabs.io/v1/jobs/{id}/stop-indexing

  • 方法: POST

  • 身份验证: Basic

恢复作业

使用这个端点来恢复某项作业。

  • 端点: https://ect.oxylabs.io/v1/jobs/{id}/stop-indexing

  • 方法: POST

  • 身份验证: Basic

示例响应:

null

获取作业信息

使用这个端点来获取现有工作的作业信息。

  • 端点: https://ect.oxylabs.io/v1/jobs/{id}

  • 方法: GET

  • 身份验证: Basic

示例响应:

{
  "id": "10374369707989137859",
  "client": "username",
  "job_params": {
    "url": "https://example.com",
    "filters": {
      "crawl": [],
      "process": [],
      "max_depth": -1
    },
    "scrape_params": {
      "source": "universal",
      "geo_location": null,
      "user_agent_type": "desktop",
      "render": null
    },
    "output": {
      "type": "sitemap",
      "selector": null
    },
    "upload": {
      "storage_type": "s3",
      "storage_url": "http://s3.amazonaws.com/{bucket_name}/"
    },
    "context": {
      "follow_amazon_deals": false
    }
  },
  "_links": [
    {
      "rel": "self",
      "href": "http://ect.oxylabs.io/v1/jobs/10374369707989137859",
      "method": "GET"
    }
  ],
  "events": [
    {
      "event": "job_indexing_finished",
      "status": "done",
      "reason": null,
      "created_at": "2021-11-19 14:32:16"
    },
    {
      "event": "job_results_aggregated",
      "status": "done",
      "reason": null,
      "created_at": "2021-11-19 14:32:17"
    }
  ],
  "created_at": "2021-11-19 14:32:01",
  "updated_at": "2021-11-19 14:32:01"
}

获取网站地图

使用这个端点来获取处理作业时发现的 URL 列表。

  • 端点: https://ect.oxylabs.io/v1/jobs/{id}/sitemap

  • 方法: GET

  • 身份验证: Basic

示例响应:

{
  "results": [
    {
      "sitemap": [
        "https://example.com",
        "https://example.com/url1.html",
        "https://example.com/url2.html",
        "https://example.com/url3.html"
      ]
    }
  ]
}

获取汇总结果

使用这个端点来获取某项作业的结果。其结果可能包括以下内容之一:

  • 一个索引(URL 的列表);

  • 一个包含所有经解析结果的汇总文件;

  • 一个包含所有 HTML 结果的汇总文件;

端点: https://ect.oxylabs.io/v1/jobs/{id}/aggregate

方法: GET

身份验证: Basic

查询参数

下面是您可以使用的所有可用参数。

参数描述默认值

url

起始点的 URL

-

filters

这些参数用于配置抓取作业的广度与深度,以及确定应将哪些 URL 包括在最终结果中。

-

filters:crawl

指定网络爬虫将在最终结果中包括哪些 URL。请访问此部分了解更多信息。

-

filters:process

指定网络爬虫将抓取哪些 URL。请访问此部分了解更多信息。

-

filters:max_depth

确定网络爬虫将遵循的 URL 链的最大长度。请访问此部分了解更多信息。

-1

scrape_params

这些参数用来微调我们执行抓取作业的方式。例如,您可能希望我们在抓取网站时执行 Javascript,或者您可能希望我们在某个特定地点使用代理。

-

scrape_params:source

请访问此部分了解更多信息。

-

scrape_params:geo_location

其结果应符合其地理位置。请访问此部分了解更多信息。

-

scrape_params:user_agent_type

设备类型和浏览器。请访问此部分了解更多信息。

desktop

scrape_params:render

请访问此部分了解更多信息。

-

output:type_

输出类型。我们可以返回一个网站地图(抓取时发现的 URL 列表)或一个包含 HTML 或经解析数据的汇总文件。请访问此部分了解更多信息。

-

upload

这些参数均用于描述您希望我们在完成作业后存储结果的云存储位置。请访问此部分了解更多信息。

-

upload:storage_type

定义您的云存储类型。唯一有效的值是 s3(AWS S3)。gcs(谷歌云存储)即将推出。

-

upload:storage_url

存储桶 URL。

-

- 必要参数

Scrape_params

您可以使用更多的爬虫 API 参数对您的配置进行微调。其大部分价值将取决于您使用的爬虫类型。

参数描述默认值

render

启用 JavaScript 渲染。当目标需要 JavaScript 加载内容时使用。如果您希望使用该功能,请将参数值设为 html更多信息

-

geo_location

其结果应符合其地理位置。您的 geo_location 参数值的格式将取决于您选择的 source。访问您选择的 source 文件以获取更多信息。例如,如果您选择的来源是 universal_ecommerce,请转到 电商爬虫 API -> 其他域名 -> 参数值,找到所解释的 geo_location 参数值。

render

启用 JavaScript 渲染。当目标需要 JavaScript 加载内容时使用。如果您希望使用该功能,请将参数值设为 html更多信息

source

source 让您指定在抓取时应使用哪种爬虫来执行抓取时的抓取作业。您应该使用的参数值取决于您提交的 URL。下表列出了您应该使用哪些 source 值。

重要事项:以下列表并不完整。在注册免费试用或购买后,您将获得完整的可用 source 值列表。

URLSource

任意 AliExpress 网址

aliexpress

任意 Bing 网址

bing

任何 Baidu 网址

baidu

任意 Google 网址

google

任意 Idealo 网址

idealo

任何其他 URL

universal(用于网站地图或 HTML 输出)或 universal_ecommerce (用于经解析输出)

user_agent_type

设备类型和浏览器。单击此处查看完整列表。

筛选

筛选器让您控制您的抓取作业的广度与深度。我们将根据抓取到的 URL 数量向您开具发票,因此为您正确设置您的筛选器很重要。否则,您可以让网络爬虫抓取更多没有必要的 URL。

processcrawl 筛选器完全依靠正则表达式 (regex) 来决定是否应该对一个 URL(或与之相关的结果)进行某些操作。网上不乏关于正则表达式的信息,因此我们不打算详细介绍正则表达式的构造。

重要的。我们在默认情况下不添加任何 processcrawl 筛选器。这意味着,如果您不为这些筛选器提交任何正则表达式,就不会进行抓取(因为我们不会跟踪任何 URL),也不会有任何结果被包含在网站地图/汇总结果中。

Regex值的示例

Regex值描述

.*

匹配任何数量的任何字符,但换行符除外。将此表达式作为一个或多个字符的通配符。

https:\/\/www.amazon.com\/[^\/]*\/[^\/]*

匹配所有在路径中不超过两个/( 斜线)符号的amazon.com URL。

https:\/\/www.amazon.com\/.*\/[A-Z0-9]{10}.*

匹配域名,后面连接任何字符串,继之以一个10个字符长的字母数字字符串,再后面又是任何字符串。使用此数值来匹配amazon.com上的所有产品URL。

一些我们认为有用的与 Regex 有关的链接

process

process 筛选器让您指定将哪些 URL 包括在作业结果中。我们发现的每个 URL 都将进行评估,以确定是否符合 crawl 筛选器。如果它们匹配,该 URL(或该 URL 的内容)将包括在作业结果中。作为参数值,请以 JSON 数组发送一个或多个正则表达式,像这样的:"process": [".e", ".c", ".t"]

crawl

Crawl 筛选器让您指定要抓取哪些 URL(除了起始点的 URL)并检查更多的 URL。简单来说,我们在抓取时发现的每个 URL 都将进行评估,以确定是否匹配抓取筛选器。如果它们匹配,我们将抓取有关 URL 以寻找更多的 URL。作为参数值,请以 JSON 数组中发送一个或多个正则表达式,像这样的:"indexable": [".e", ".c", ".t"]

max_depth

max_depth 值筛选器决定了网络爬虫能够跟踪的 URL 链的最大长度。

描述

-1

抓取没有任何深度限制。这是默认设置。

0

只抓取起始页。

1

抓取在起始页中发现的所有 URL。

2

抓取在起始页 URL 中发现的所有 URL。

3

抓取在起始页 URL 中发现的所有 URL 内的 URL。

4

抓取在起始页 URL 中发现的所有 URL 内 URL 的 URL。

n

抓取 n * (all URLs found in) 起始页。

注意:网络爬虫只会抓取与起始点 URL 所在域相同域中的 URL。其覆盖该设置的能力已列入我们的路线图。

输出

type_

type_ 参数决定了网络爬虫作业的输出将包含哪些内容。输出类型的划分如下:

描述

sitemap

URL 列表。

parsed

一份包含经解析汇总结果的 JSON 文件。

html

一份包含 HTML 汇总结果的 JSON 文件。

重要事项:以下列表并不完整。它只包含通用爬虫。这些爬虫是用来从我们没有定制爬虫的任何域名收集数据。在注册免费试用或购买后,您将获得完整的可用 source 值列表。

用量统计

在使用网络爬虫时,我们会根据抓取的 URL 数量向您开具发票。每次抓取的价格将与您常规爬虫 API 的使用价格相同。

您可以在此处阅读关于检查您的用量统计的信息。

集成

Postman

如果您想尝试所有的爬虫端点,则可以下载并使用该 Postman 集合

Swagger / OpenAPI

您可以查阅我们的 Swagger 文件 页面,其中包含 API 模式以及其他有用的信息。

最后更新于