术语

网络爬虫

网络爬虫是一种按系统方式访问网页的程序。它会跟随链接、加载内容,还可以选择截取页面或提取数据。

网络爬虫如何工作

网络爬虫从一个或多个种子 URL 开始。它获取每个种子页面的 HTML,解析其中的超链接,再把链接加入队列。之后,爬虫逐个访问队列中的 URL、发现新链接并重复这个过程,同时建立网站结构图。

这个过程由多项设置控制。深度限制决定爬虫从种子 URL 开始跟随多少层链接;URL 筛选器把抓取范围限制在特定域名、子域名或路径模式中;速率限制确保爬虫不会同时发送太多请求,导致目标服务器过载。

简单爬虫使用 HTTP 客户端获取原始 HTML。更高级的爬虫则运行无头浏览器来渲染 JavaScript、等待动态内容加载,再处理完整渲染后的页面。对于大部分内容在初始 HTML 响应之后才加载的现代单页应用,这种区别十分重要。

爬虫会维护已访问集合,避免重复处理同一 URL,通常也会遵守 robots.txt 文件中的规则。该文件会告诉自动代理哪些路径可以访问,哪些不可以。

网页抓取与数据提取

抓取网页与提取数据有关联,但属于不同活动。爬虫的主要任务是发现,即找到页面并绘制网站结构;数据提取工具的任务是提取,即从单个页面取得特定数据,例如文字、价格、图像和元数据。

实际使用中,两者经常结合。爬虫可以发现电商网站中的所有产品页面,数据提取工具再从每个页面取得名称、价格和库存。同样,爬虫可以发现营销网站中的各个页面,截图引擎则为每页生成视觉快照。

关键区别在于目的:抓取网页回答“有哪些页面?”,提取数据回答“每个页面上有什么?”

在截图工具中,爬虫通常是发现层,而不是最终产物。它找出值得覆盖的 URL,截图系统再把这份 URL 列表转化为视觉证据、审核材料或档案。

网络爬虫的应用场景

  • 搜索引擎——Google、Bing 等搜索引擎使用大型爬虫(Googlebot、Bingbot)发现并索引互联网上的网页。
  • 网站审核与 SEO——爬虫会检查整个网站中的失效链接、缺失元标签、重定向链和无障碍问题。
  • 视觉监测——有些截图工具包含内置网络爬虫,可以从 URL 列表中逐页截图,无需手动浏览就能对数百个页面进行视觉审核。
  • 归档与合规——组织会抓取自己的网站或第三方页面,建立用于监管或法律目的的视觉和数据记录。
  • 竞品情报——爬虫监测竞品网站的价格变化、新产品发布和内容更新。

常见错误

  • 忽视 robots.txt。 robots.txt 文件会指定爬虫应避开的路径。忽略它可能导致 IP 被封禁、产生法律问题,还会给服务器带来不必要的负载。应始终检查并遵守这些指令。
  • 抓取时不限制速率。 同时发送数百个请求可能压垮服务器、触发反机器人防护,并导致 IP 被封。应在请求之间加入延迟,并限制并发连接数。
  • 没有处理重复 URL。 同一页面可能通过多种 URL 变体访问,例如是否有尾部斜杠、是否带查询参数或片段标识符。应规范化 URL,并维护已访问集合,避免重复处理。
  • 跳过 JavaScript 渲染。 现代网站会动态加载内容。只获取原始 HTML 的爬虫,会遗漏 React、Vue 或 Angular 等 JavaScript 框架渲染的内容。大量依赖 JavaScript 的网站应使用无头浏览器。
  • 没有设置抓取范围。 如果缺少深度限制或 URL 筛选器,爬虫可能陷入无限分页、进入外部域名,或持续访问动态生成的 URL。开始前应明确边界。

常见问题

网络爬虫与网页数据提取工具有什么区别?

爬虫通过跟随链接发现页面,任务是找到 URL;数据提取工具则从这些页面中提取特定数据,任务是取得内容。许多工具会结合两者:由爬虫找到页面,再由数据提取工具或截图引擎逐页处理。

网络爬虫会执行 JavaScript 吗?

传统爬虫只获取原始 HTML,不执行 JavaScript。现代爬虫可以使用无头浏览器渲染大量依赖 JavaScript 的页面,这对单页应用和动态加载内容很有必要。

如何控制爬虫访问哪些页面?

可以通过深度限制控制爬虫跟随链接的层级,也可以用 URL 模式筛选器(允许或拒绝列表)纳入或排除特定路径。遵守网站的 robots.txt 文件既是技术最佳实践,也符合网络伦理。

网络爬虫可以截取访问过的每个页面吗?

可以。有些截图工具包含内置爬虫,会访问发现的每个页面并自动截图。这适合对整个网站进行视觉审核、归档和监测。

网络爬虫合法吗?

抓取公开页面通常是允许的,但应遵守 robots.txt 指令,避免快速请求导致服务器过载,并查看网站的服务条款。抓取需要登录的内容或收集个人数据,会涉及更多法律考量。

参考资料

相关资料

什么是网络爬虫? | 术语表 | Shotomatic