「抓取预算」这个词常被说得有点玄,其实它背后的现实很朴素:搜索蜘蛛在单位时间内愿意花在一个站点上的请求次数是有限的。站点被不被充分抓取,很大程度上取决于这些请求被花在了哪些 URL 上。
想判断这些请求花得值不值,最直接的材料往往不是后台报表,而是服务器访问日志。日志记录的是蜘蛛真实的脚步,而不是你希望它走的路线。
日志里有两类信息,别混着看
一类是「来了没有」:来访频率、集中在什么时段、来自哪些 IP 段和 UA。这类信息回答的是抓取量的问题。
另一类是「去了哪里」:请求了哪个 URL、返回什么状态码、响应时间多长。这类信息回答的是抓取结构的问题。
把日志按蜘蛛 UA 过滤出来之后,常见的情况是:抓取总量并不少,但落在核心内容页的比例不高,大部分请求消耗在列表页、参数页和重复地址上。
从日志里能读到的三件事
一、来了多少次,每次抓多少页
把日志按天或按周切分,看蜘蛛的请求数和独立 URL 数。如果请求数一直很高但独立 URL 数长期不动,说明它在同一批页面上反复打转,新的 URL 并没有被发现。
二、时间集中在哪些目录
统计 URL 路径的第一层目录,能大致看出蜘蛛认为站点哪一部分更重要。如果某个核心栏目几乎不出现在日志里,问题通常不在服务器,而在内链入口太弱、位置太深。
三、哪些链接反复被抓,哪些一直没人碰
首页、栏目页被反复抓是正常现象;但如果某些参数组合页一天被抓好几次,而正文页几天才来一回,就说明抓取路径上存在明显的浪费。
高消耗、低产出的几类页面
- 筛选、排序条件组合出来的列表页,数量可能随参数增长;
- 翻得很深的分页列表尾部,链接存在但检索价值有限;
- 标签页、归档页、作者页,量大且彼此重复度高;
- 站内搜索结果页,等于给蜘蛛开了一个近乎无限的入口;
- 同一篇内容的多套地址:打印版、带跟踪参数、http 与 https 并存等。
这些页面并非一定要删掉,但它们消耗的是同一份预算。
把预算往核心页面挪的几种做法
- 先收敛重复地址。确定一个规范地址,其余通过 301 或 canonical 归拢,从源头减少入口数量。
- 区分 noindex 与 robots.txt。noindex 需要蜘蛛把页面抓下来才读得到,robots.txt 屏蔽则直接不让抓。想让某类页面彻底不消耗抓取,用后者更干净,但要注意被屏蔽的 URL 上再放 noindex 已经没有意义。
- 给内链做减法。把筛选、排序、站内搜索的入口减少到必要数量,核心内容页多安排几条稳定、位置靠前的内链。
- Sitemap 只放值得抓的 URL。把低价值地址从中拿掉,比把地址堆满更有用。
- 保证核心页响应稳定。超时和 5xx 会让蜘蛛放慢节奏,这部分消耗是纯损失。
屏蔽低价值页面不等于把站封起来。抓取入口一旦被切断,蜘蛛也就失去了发现新内容的路径,取舍应按「这个页面有没有检索价值」来判断,而不是按「这个页面像不像浪费」来判断。
先做基线,再比对变化
调整之前,先记录一到两周的日志基线:每天蜘蛛请求数、独立 URL 数、核心目录占比、状态码分布。改完之后隔两三周再看同一组数字,变化才有参照。抓取预算的优化很少一步到位,更多是几轮小调整叠加出来的结果。