搜索抓取

抓取预算被谁吃掉:把蜘蛛的时间留给重要页面

蜘蛛每天在站点上的抓取次数有限,真正影响收录的是这些额度被花在了哪里。本文梳理常见的预算消耗来源——参数组合页、站内搜索页、全站重复的页脚链接、慢响应与 200 兜底页,并给出一套按顺序执行的收紧方法,以及调整后该观察哪些日志指标。

搜索抓取

抓取预算被谁吃掉:把蜘蛛的时间留给重要页面

搜索蜘蛛在一个站点上停留的时间和请求次数都是有限的。它每天会来,但不会把全站每个 URL 都抓一遍。真正决定哪些页面被抓到的,往往不是提交了多少 URL,而是这些抓取额度被花在了哪些页面上。

抓取预算不是平台给的固定数字

它更像一个动态结果:约等于“服务器在可承受并发下能稳定响应多少次”,乘以“蜘蛛愿意在这个站点上停留多久”。响应越慢、页面越重、无效 URL 越多,单位时间内能抓完的页面就越少。所以提升抓取效率的思路,不是想办法要更多额度,而是减少无效消耗。

哪些页面在悄悄消耗额度

  • 筛选、排序、分页参数组合出的排列组合页,内容高度重复;
  • 站内搜索结果页,每次抓取都可能生成一批新 URL;
  • 空列表、空标签页、没有内容的列表尾部;
  • 页脚、侧栏里全站重复出现的栏目链接;
  • 返回 200 但实际没有内容的占位页;
  • 登录、注册、购物车一类与内容无关的功能页。

这些页面单看都不多,但乘以全站规模之后,常常会占掉相当一部分抓取量。

先建立一条基线

不用复杂工具,从服务器访问日志里按蜘蛛的 UA 过滤,统计最近两到四周的几项数据:抓取总次数、各状态码占比、平均响应耗时、被访问次数最多的路径前缀。重点不是精确的绝对值,而是看清楚哪一类路径被反复抓。

参数页被无限放大

筛选条件的组合往往是指数级的,蜘蛛顺着链接一层层点下去,就能生成大量只有细微差别、内容几乎一样的 URL。这类页面如果不需要被收录,用 robots.txt 挡住抓取路径是最直接的做法;如果其中一部分有搜索价值,就保留主参数、收敛其余组合。

内链把蜘蛛引向模板页

很多站点页脚挂着十几个栏目链接,再加上每次刷新都变化的热门推荐模块,蜘蛛每次进来都会先走一遍这些路径。把全站重复的链接精简,把随机推荐改成固定推荐,能立刻把额度让给内容页。

慢响应拖慢整体节奏

响应耗时是决定单位时间抓取量的关键变量之一。数据库慢查询、未缓存的动态页面、体积过大的图片和脚本都会让蜘蛛的等待时间变长,进而减少它在一段时间内能抓的页面数。

可以按顺序做的几件事

  1. 在 robots.txt 中屏蔽无收录价值的路径:搜索结果页、组合参数页、后台与功能页。
  2. 对需要保留但不必全部抓取的参数页,明确 canonical,并减少站内指向它们的链接数量。
  3. 精简页脚与侧栏,去掉全站重复且低价值的链接。
  4. 给重要内容页在首页、栏目页、相关阅读里各留一条稳定的内链,别让它们只出现在 Sitemap 里。
  5. 优化首字节时间和页面体积,让蜘蛛每次请求更快拿到结果。
  6. 把状态码收干净:不存在的页面返回 404 或 410,不要用 200 兜底。

收紧之后看什么

调整后的一到两天内数字会有波动,不必急于判断。等两到四周,再看同一批重要目录的抓取次数、平均响应耗时和状态码分布有没有变化。观察的是趋势:重要页面的抓取占比是否提高,无效路径的请求量是否下降。

抓取额度不是申请来的,是被站内结构决定的。把无效路径堵住,把快捷入口留给内容页,蜘蛛的时间自然会花在更值得的地方。