很多站长习惯盯着一个数字:今天蜘蛛来了多少次。次数涨了就安心,次数掉下来就慌。但蜘蛛的访问量并不是无限的,搜索引擎每天愿意在一个站点上花多少时间,是有大致范围的。行业里常说的抓取预算(crawl budget),描述的就是这件事——它不是官方给出的固定额度,而是一个用来理解抓取行为的视角。
抓取预算不是一个固定数字
同样规模的站点,能分到的抓取量可能差很多。通常和这几件事有关:站点的页面总量、更新频率、服务器响应速度、内容是否长期稳定、以及整体质量信号。页面数量多、更新频繁、响应快的站点,往往会被更频繁地访问;而一个大站如果长期有大量死链和慢页面,抓取量就会被拖住。
所以当你想判断"我的抓取量是否正常"时,先别和其他站点横向比。更实际的做法是:记录自己站点一周的基线,然后看变化。
抓取多了,不等于收录多了
这是最容易被混淆的一点。抓取解决的是"这个地址被看到了",收录解决的是"这个地址值不值得留下"。蜘蛛把一个页面抓走十次,如果内容一直没变、又没有足够的价值,也不代表它就会进入索引。
抓取量回答的是访问频率问题,收录回答的是质量判断问题。把两者当成一回事,后面的判断都会跑偏。
更常见的情况是:抓取量看着不错,但其中大部分都花在了不值得收录的地址上,真正需要被发现的页面反而排在后面。
哪些 URL 在消耗抓取量
下面这些类型,往往是抓取日志里的常客,但价值普遍不高:
- 带筛选、排序参数的列表页,参数组合接近无限
- 带追踪参数的地址,同一内容对应多个 URL
- 会话 ID、临时 token 生成的地址
- 站内搜索结果页
- 返回 200 状态但内容为空的软 404 页面
- 需要经过多次跳转才能到达的重定向链
- 响应很慢的页面,一次抓取会占用较长时间
这些地址单独看都不算"错误",但它们会摊薄抓取资源,让真正重要的页面被访问得更少、更慢。
从日志入手:一套自查顺序
不知道从哪里开始时,建议按下面的顺序过一遍服务器日志或抓取统计:
- 先按状态码分组,看 200、301、404、5xx 各占多少比例。5xx 和大量 404 是明显的浪费。
- 再按路径或模板分组,看哪一类页面被抓得最多。是内容页,还是列表页和参数页?
- 把被抓取最多的地址,和站点里真正有内容的地址做对比,找出落差。
- 看响应时间分布,把明显偏慢的页面单独列出来。
- 记录一周内各类 URL 的被抓次数,作为后续对比的基线。
做完这几步,通常就能看出抓取量到底是被谁吃掉的,而不是笼统地觉得"蜘蛛来得不够多"。
处理顺序:先止血,再引导
发现浪费之后,动手的顺序也很重要。
先止血:修掉返回错误状态码的页面,让该返回 404 的返回 404,该跳转的做一次跳转而不是链式跳转;对无价值的参数组合,用 robots.txt 或服务器规则做拦截;优化响应最慢的那几个页面。
再引导:通过内链和站点地图,把抓取资源引向真正希望被收录的页面。站点地图里尽量只放值得收录的地址,不要把全部参数页都塞进去。
需要提醒的是,用 robots.txt 屏蔽一个地址,并不等于把它从索引里移除。这两件事的处理方式不同,容易混在一起判断。
关于蜘蛛池这类工具
市面上有些工具会宣称能通过制造大量抓取请求来"喂养"站点。从原理上说,它们改变的只是日志里的访问数字,而不是页面的质量信号。抓取请求本身不带来收录判断,反而可能让你在自查日志时看到一堆无意义的访问记录,干扰判断。把它当成收录手段,方向和预期都不太对。
观察周期要按周算
抓取行为的调整通常不会当天见效。做完拦截和提速之后,建议以周为单位观察日志里的结构变化:低价值地址的抓取比例是否下降,重要页面的被抓频率是否上升。一天一结论,很容易被正常的波动带偏。
把抓取预算理解成一笔有限的资源,然后定期检查它流向哪里,比单纯数蜘蛛来了多少次更有用。