抓取预算不是一个固定数字
很多站点在讨论收录时,会默认爬虫总能“把整站看一遍”。实际上,搜索引擎对单个站点在一段时间内的抓取次数和并发是有限度的,这个额度常被称作抓取预算(crawl budget)。它没有公开的固定值,会随站点规模、更新频率、服务器响应速度和历史抓取表现而变化。
所以问题往往不是“爬虫有没有来”,而是“来的时候把时间花在了哪里”。如果重要页面迟迟不被抓取,先别急着重复提交,通常要看两件事:有没有在低价值 URL 上浪费额度,以及有没有明确信号把爬虫引向核心页面。
先看浪费:几类常见的预算消耗
参数组合和会话类 URL
筛选、排序、分页参数、会话 ID、追踪参数,如果每一种组合都能生成可抓取的地址,爬虫很容易在同一批内容上反复打转。
- 确实没有收录价值的参数组合,可以考虑用 robots.txt 挡掉,但要确认不会连带挡住核心页。
- 页内筛选尽量采用不生成新可抓取地址的方式实现,或者用 noindex 控制,同时保证入口可控。
- 会话类、追踪类参数对收录没有帮助,尽早去掉或在站内链接中规范掉。
跳转链和失效地址
一次跳转常常要多花一次请求,链式跳转(A→B→C)比直接跳转更浪费。如果站内还在大量链接到已经 301 的旧地址,爬虫就会反复走同一条绕路。把内链直接指向最终地址,并把跳转压缩到一层,通常比事后补救更省事。
404、软 404 和空壳页
这些地址本身没有收录价值,却会持续被内链或站点地图送进抓取队列。定期清理内链里的死链,把确实没有内容的页面下架或返回明确的失效状态,比让它们长期挂着更省额度。
再把额度引向重要 URL
减少浪费只是一半,另一半是给爬虫清晰的优先级。
- 内链位置:从首页、栏目页、相关文章模块链出去,通常比藏在很深层级里更容易被频繁抓取。
- 被引用次数:同一地址被站内多篇内容自然引用,比只出现在站点地图里一次更容易被注意到。
- 层级深度:核心页面尽量控制在较浅的点击深度,详情页不要只能通过“加载更多”到达。
- 站点地图:把真正希望被收录的 URL 放进去,lastmod 保持真实,不要把所有历史页面反复刷成新日期。
- 更新节奏:内容有实质变化时再更新,频繁无意义地改动会让新旧内容一起被稀释。
几项可观察的核对项
抓取预算的分配情况,可以通过抓取统计和服务器日志粗略判断:
- 抓取请求里有多大比例落在参数页、跳转地址和 404 上;
- 核心目录的抓取次数是否长期低于低价值目录;
- 重要新页面从上线到首次被抓取的间隔是否在缩短;
- 服务器响应时间是否拖慢了整体抓取节奏。
抓取额度更像是长期的分配问题:少让爬虫走错路,多让它走对路。具体能抓多少、什么时候收录,仍由搜索引擎决定,我们能做的是把条件尽量摆好,而不是承诺结果。