搜索抓取

蜘蛛的时间花在哪:用访问日志看抓取预算怎么被消耗

抓取预算听起来抽象,其实在服务器日志里能看到具体的消耗方式。本文说明怎样从访问日志判断蜘蛛来了多少次、把时间集中在哪些目录、哪些链接反复被抓,并给出收敛重复 URL、合理屏蔽、调整内链与 Sitemap 的务实做法,让抓取时间更多落在核心内容页。

搜索抓取

蜘蛛的时间花在哪:用访问日志看抓取预算怎么被消耗

「抓取预算」这个词常被说得有点玄,其实它背后的现实很朴素:搜索蜘蛛在单位时间内愿意花在一个站点上的请求次数是有限的。站点被不被充分抓取,很大程度上取决于这些请求被花在了哪些 URL 上。

想判断这些请求花得值不值,最直接的材料往往不是后台报表,而是服务器访问日志。日志记录的是蜘蛛真实的脚步,而不是你希望它走的路线。

日志里有两类信息,别混着看

一类是「来了没有」:来访频率、集中在什么时段、来自哪些 IP 段和 UA。这类信息回答的是抓取量的问题。

另一类是「去了哪里」:请求了哪个 URL、返回什么状态码、响应时间多长。这类信息回答的是抓取结构的问题。

把日志按蜘蛛 UA 过滤出来之后,常见的情况是:抓取总量并不少,但落在核心内容页的比例不高,大部分请求消耗在列表页、参数页和重复地址上。

从日志里能读到的三件事

一、来了多少次,每次抓多少页

把日志按天或按周切分,看蜘蛛的请求数和独立 URL 数。如果请求数一直很高但独立 URL 数长期不动,说明它在同一批页面上反复打转,新的 URL 并没有被发现。

二、时间集中在哪些目录

统计 URL 路径的第一层目录,能大致看出蜘蛛认为站点哪一部分更重要。如果某个核心栏目几乎不出现在日志里,问题通常不在服务器,而在内链入口太弱、位置太深。

三、哪些链接反复被抓,哪些一直没人碰

首页、栏目页被反复抓是正常现象;但如果某些参数组合页一天被抓好几次,而正文页几天才来一回,就说明抓取路径上存在明显的浪费。

高消耗、低产出的几类页面

  • 筛选、排序条件组合出来的列表页,数量可能随参数增长;
  • 翻得很深的分页列表尾部,链接存在但检索价值有限;
  • 标签页、归档页、作者页,量大且彼此重复度高;
  • 站内搜索结果页,等于给蜘蛛开了一个近乎无限的入口;
  • 同一篇内容的多套地址:打印版、带跟踪参数、http 与 https 并存等。

这些页面并非一定要删掉,但它们消耗的是同一份预算。

把预算往核心页面挪的几种做法

  1. 先收敛重复地址。确定一个规范地址,其余通过 301 或 canonical 归拢,从源头减少入口数量。
  2. 区分 noindex 与 robots.txt。noindex 需要蜘蛛把页面抓下来才读得到,robots.txt 屏蔽则直接不让抓。想让某类页面彻底不消耗抓取,用后者更干净,但要注意被屏蔽的 URL 上再放 noindex 已经没有意义。
  3. 给内链做减法。把筛选、排序、站内搜索的入口减少到必要数量,核心内容页多安排几条稳定、位置靠前的内链。
  4. Sitemap 只放值得抓的 URL。把低价值地址从中拿掉,比把地址堆满更有用。
  5. 保证核心页响应稳定。超时和 5xx 会让蜘蛛放慢节奏,这部分消耗是纯损失。
屏蔽低价值页面不等于把站封起来。抓取入口一旦被切断,蜘蛛也就失去了发现新内容的路径,取舍应按「这个页面有没有检索价值」来判断,而不是按「这个页面像不像浪费」来判断。

先做基线,再比对变化

调整之前,先记录一到两周的日志基线:每天蜘蛛请求数、独立 URL 数、核心目录占比、状态码分布。改完之后隔两三周再看同一组数字,变化才有参照。抓取预算的优化很少一步到位,更多是几轮小调整叠加出来的结果。