很多站点把“抓取预算”当成一个可以申请、可以调高的配额,其实它更像一个结果:一边是搜索引擎愿意给你的抓取速率,另一边是你站点上需要被抓的 URL 总量。两边一除,就是每天大概能拿到的抓取次数。想让重要页面被更快发现,能动手的地方主要在分母。
抓取额度被什么吃掉
把抓取日志按目录、按模板分组统计一遍,通常会看到同一类页面反复出现。常见的几类:
- 参数组合:筛选、排序、分页参数互相排列组合,URL 数量指数增长,内容却高度重复。
- 分页的尾巴:列表翻到第 50 页之后的条目,绝大多数早就能从别处被抓到。
- 软 404 与空壳页:返回 200 但没有实质内容,蜘蛛每次都来,每次都空手而归。
- 重定向链:一个入口要跳三四次才到终点,中间每一跳都在花时间。
- 同一内容的多套地址:带 www 与不带 www、大小写差异、带不带尾斜杠,各自被抓一遍。
让分母变小的几个动作
- 收敛参数:能被 robots.txt 或 canonical 处理的组合,尽量不要放开给蜘蛛到处爬;必要参数保留,营销参数剥掉。
- 明确 canonical:每个模板只留一个规范地址,列表页、详情页、分页页各自说清楚。
- 内链指向规范地址:站内链接是蜘蛛最主要的发现入口,链到哪个地址,它就更可能去抓哪个地址。
- Sitemap 只放值得抓的:canonical 之外的变体、早已 404 的历史地址清出去,减少无效排队。
- 处理重定向:能直连就直连,301 链尽量压到一跳以内。
抓取速率那一边能做什么
速率主要由服务器表现决定:响应时间、错误率、超时比例。稳定往往比快更重要——一个偶尔 200ms、偶尔 8s 的站点,通常不如稳定在 400ms 的站点拿到的抓取量多。反向代理、页面缓存、静态化、把动态接口的重活挪到异步,都是常见做法。
一个常见的误解
新发布的 URL 不一定排在最前面被抓。蜘蛛有它自己的优先级判断:链接入口多不多、页面在站内的层次、历史抓取质量、站点整体响应情况,都会影响排队顺序。所以“发布了却迟迟没动静”时,先看内链和 Sitemap,而不是急着去找抓取加速的手段。
抓取预算不是靠某个工具或某个“池”直接塞进来的,它更像站点健康度的一份读数。
自查的顺序
- 从日志里挑一天,按目录统计抓取次数与状态码分布。
- 找出被反复抓取、却从不产生价值的那几类 URL。
- 追问这些 URL 是从哪个入口被发现的:内链、Sitemap,还是参数拼接。
- 堵掉入口,观察两周,看重点目录的抓取次数有没有上升。
如果站内链接本身很稀疏,蜘蛛想走到深层页面只能靠 Sitemap,发现速度自然慢。这种情况优先补内链,把重要页面挂到相关度高、位置靠前的链接上,比换抓取策略更直接。每隔一段时间和上个月的数据对比一次,把“抓取次数上升的目录”和“实际有新内容的目录”放在一起看,差距就是下一步该处理的地方。