网络爬虫 (Web Crawler)
网络爬虫是一项爬虫API功能,可以让您爬取任何网站,选择有用的内容,并将其批量发送给您。您可以使用网络爬虫来执行URL搜索,爬取一个网站的所有页面,查找一个域名中的所有URL,以及用于其他目的。
下列教程将指导您完成网络爬虫的工作流程,展示了从一个电商网站检索公共数据的过程。
如何抓取网站:分步指南
使用这个端点来启动一项新的网络爬虫作业。
- 端点:
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 | - | |
filters :process | - | |
filters :max_depth | -1 | |
scrape_params | 这些参数用来微调我们执行抓取作业的方式。例如,您可能希望我们在抓取网站时执行 Javascript,或者您可能希望我们在某个特定地点使用代理。 | - |
scrape_params :source | - | |
scrape_params :geo_location | - | |
scrape_params :user_agent_type | desktop | |
scrape_params :render | - | |
output :type_ | - | |
upload | - | |
upload :storage_type | 定义您的云存储类型。唯一有效的值是 s3 (AWS S3)。gcs (谷歌云存储)即将推出。 | - |
upload :storage_url | 存储桶 URL。 | - |
- 必要参数
您可以使用更多的爬虫 API 参数对您的配置进行微调。其大部分价值将取决于您使用的爬虫类型。
参数 | 描述 | 默认值 |
---|---|---|
render | - |
其结果应符合其地理位置。您的
geo_location
参数值的格式将取决于您选择的 source
。访问您选择的 source
文件以获取更多信息。例如,如果您选择的来源是 universal_ecommerce
,请转到 电商爬虫 API -> 其他域名 -> 参数值,找到所解释的 geo_location 参数值。source
让您指定在抓取时应使用哪种爬虫来执行抓取时的抓取作业。您应该使用的参数值取决于您提交的 URL。下表列出了您应该使用哪些 source
值。URL | Source |
---|---|
任意 AliExpress 网址 | aliexpress |
任意 Bing 网址 | bing |
任何 Baidu 网址 | baidu |
任意 Google 网址 | google |
任意 Idealo 网址 | idealo |
任何其他 URL | universal (用于网站地图或 HTML 输出)或 universal_ecommerce (用于经解析输出) |
筛选器让您控制您的抓取作业的广度与深度。我们将根据抓取到的 URL 数量向您开具发票,因此为您正确设置您的筛选器很重要。否则,您可以让网络爬虫抓取更多没有必要的 URL。
process
和 crawl
筛选器完全依靠正则表达式 (regex) 来决定是否应该对一个 URL(或与之相关的结果)进行某些操作。网上不乏关于正则表达式的信息,因此我们不打算详细介绍正则表达式的构造。重要的。我们在默认情况下不添加任何
process
或 crawl
筛选器。这意味着,如果您不为这些筛选器提交任何正则表达式,就不会进行抓取(因为我们不会跟踪任何 URL),也不会有任何结果被包含在网站地图/汇总结果中。Regex值 | 描述 |
---|---|
.* | 匹配任何数量的任何字符,但换行符除外。将此表达式作为一个或多个字符的通配符。 |
https:\/\/www.amazon.com\/[^\/]*\/[^\/]* | 匹配所有在路径中不超过两个 / ( 斜线)符号的amazon.com URL。 |
https:\/\/www.amazon.com\/.*\/[A-Z0-9]{10}.* | 匹配域名,后面连接任何字符串,继之以一个10个字符长的字母数字字符串,再后面又是任何字符串。使用此数值来匹配 amazon.com 上的所有产品URL。 |
一些我们认为有用的与 Regex 有关的链接
process
筛选器让您指定将哪些 URL 包括在作业结果中。我们发现的每个 URL 都将进行评估,以确定是否符合 crawl
筛选器。如果它们匹配,该 URL(或该 URL 的内容)将包括在作业结果中。作为参数值,请以 JSON 数组发送一个或多个正则表达式,像这样的:"process": [".e", ".c", ".t"]
。Crawl
筛选器让您指定要抓取哪些 URL(除了起始点的 URL)并检查更多的 URL。简单来说,我们在抓取时发现的每个 URL 都将进行评估,以确定是否匹配抓取
筛选器。如果它们匹配,我们将抓取有关 URL 以寻找更多的 URL。作为参数值,请以 JSON 数组中发送一个或多个正则表达式,像这样的:"indexable": [".e", ".c", ".t"]
。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_
参数决定了网络爬虫作业的输出将包含哪些内容。输出类型的划分如下:值 | 描述 |
---|---|
sitemap | URL 列表。 |
parsed | 一份包含经解析汇总结果的 JSON 文件。 |
html | 一份包含 HTML 汇总结果的 JSON 文件。 |
在使用网络爬虫时,我们会根据抓取的 URL 数量向您开具发票。每次抓取的价格将与您常规爬虫 API 的使用价格相同。
最近更新 4mo ago