- 自动会话管理
- 锁定 195 个国家/地区的任意城市
- 无限并发会话
爬取范围
简而言之:爬取范围是一组规则,用于定义爬虫可以访问哪些 URL。它涵盖域名边界、路径模式和排除项,是防止爬取任务无限扩大的主要手段。
爬取范围决定了爬虫的活动边界。如果不设置范围,爬虫从种子 URL出发持续跟随链接,最终会完全离开目标网站,开始爬取开放网络。每个新发现的 URL 在进入 URL 待爬取队列前都会接受范围规则检查,因此范围之外的链接会被丢弃,不会消耗带宽。
范围规则的类型:
- 域名范围:将爬取限制在一个或多个主机名内。最严格的规则只允许指定主机;较宽松的规则则允许子域名。
- 路径范围:将爬取限制在符合特定前缀或模式的 URL 路径内,例如仅爬取
/blog/或/products/。 - 排除模式:明确屏蔽原本属于爬取范围的路径,通常包括登录页、购物车、筛选页面和打印页面。
- 参数规则:控制是否将不同的查询字符串视为不同 URL,或在 URL 规范化过程中将其合并。
- 内容类型范围:限制爬虫获取的 MIME 类型,通常排除图片、视频和二进制文件。
- 深度范围:通过爬取深度限制爬虫距离种子 URL 的最大跳转层级。
范围模式对比:
| 模式 | 允许访问 | 风险 | 典型用途 |
|---|---|---|---|
| 指定主机 | 仅 example.com | 可能遗漏子域名上的内容 | 单站点爬取 |
| 主机及子域名 | *.example.com | 可能纳入无关的子域名 | 包含多个站点的大型网站 |
| 指定路径前缀 | example.com/docs/* | 可能遗漏该前缀之外的关联内容 | 文档、博客栏目 |
| 域名列表 | 指定的一组主机 | 网站发生变化时需要维护列表 | 竞争对手监测 |
| 不设限制 | 跟随任何链接 | 爬取任务可能永远无法结束 | 仅适用于全网规模的内容发现 |
范围配置示例:
{
"seeds": ["https://example.com/docs/"],
"scope": {
"allowed_domains": ["example.com", "docs.example.com"],
"include_patterns": ["/docs/*", "/api-reference/*"],
"exclude_patterns": [
"/docs/*/print",
"*?lang=*",
"*/search*",
"*.pdf"
],
"max_depth": 5,
"allowed_content_types": ["text/html"]
}
}
此配置将爬取限制在两个主机的文档路径内,跳过打印版和翻译版本,完全避开搜索端点,并且只获取 HTML 内容。
需要避免的范围陷阱:
某些 URL 模式会生成近乎无限的链接空间。如果没有排除规则,爬虫就会持续抓取,直到耗尽预算。
电商网站上的分面导航会将筛选条件组合成不同的 URL。五个筛选条件各有十个可选值,就会为同一批商品生成十万种组合。
日历页面可能无限地链接到下一个月,让爬虫逐页向前爬取,甚至进入公元 3000 年。
URL 中的会话标识符会让每次访问的页面看起来都不相同,使去重机制完全失效。
排序和分页参数会将同一列表扩展为数十个变体,只是内容顺序不同。
审慎设置爬取范围:
范围过窄会悄然遗漏内容,而且往往要到分析数据集时才会发现缺口。范围过宽则会浪费预算,还可能让爬虫进入运营者原本无意访问的第三方域名。
实用的方法是先设置较严格的范围,运行一次小规模测试爬取,检查哪些 URL 被拒绝,再有针对性地放宽规则。记录被跳过的 URL 及对应的拒绝规则,就能通过可核查的方式调整范围,而不必靠猜测。
Bright Data 的爬虫 API支持同时设置包含模式、排除模式、域名限制和深度限制,并报告各条规则过滤了哪些 URL,方便您在两次运行之间优化爬取范围。
全球超50000 位客户信赖之选
欢迎来到 云抓取