站点越大,越容易遇到一个现象:内页没被抓几次,日志里却天天出现一堆参数页、筛选页和重复地址。搜索蜘蛛的抓取能力是有限的,把额度花在低价值 URL 上,真正需要更新的页面就排不上队。这篇文章讲的就是抓取配额的分配问题,重点在识别和清理。
抓取配额是什么,什么时候才需要在意
抓取配额不是官方公布的一个数字,而是搜索引擎在一段时间内愿意花在一个站点上的抓取请求总量。它和站点规模、更新频率、服务器响应速度、页面本身的价值都有关系。
小站点通常不用太担心这件事——页面总共几百个,蜘蛛几轮就爬完了。真正需要关注的是下面几种情况:
- 已收录 URL 数以万计,但每天新增内容只有几十条;
- 日志里大量请求打在同一个路径模式上,比如带排序参数的列表页;
- 服务器响应偏慢,或者经常返回 5xx,让蜘蛛主动减速。
如果符合其中几条,清理低价值 URL 的收益会比较明显。
哪些 URL 最容易吃掉抓取量
- 排序、筛选、追踪参数组合出来的无限地址,例如 ?sort=、?filter=、?utm_=;
- 翻到很深层次、内容重复度又高的分页;
- 站内搜索结果页;
- 会话 ID、打印页、日历跳转这类功能页;
- 已经失效、却还挂着链接并一路 302 到新地址的旧路径;
- 数量膨胀、内容稀薄的标签页和作者页;
- 由参数意外拼出的无意义组合地址。
这些地址未必都是错的。判断标准不是好看不好看,而是有没有独立的检索价值。
清理顺序:先堵入口,再改信号
第一步:减少站内链接的暴露
蜘蛛主要跟着链接走。如果筛选页、搜索页广泛出现在导航和正文里,它们就会被反复抓取。把这类入口收进页面内的交互,或者用 nofollow 降低权重传递,通常比事后处理更有效。
第二步:用 robots.txt 挡住不值得抓的路径
robots.txt 适合处理那些永远不需要被检索、但地址会被大量生成的路径,比如站内搜索、购物车、后台工具页。
这里有一条常被误解的规则:robots.txt 只阻止抓取,不负责把已索引的页面移除。如果某个地址已经进了索引,必须在页面上加 noindex,或者让它返回 404、410,才有机会被移出去。
第三步:用 noindex 和 canonical 处理重复页面
同一内容存在多个地址时,canonical 指向主版本;主版本如果不需要收录,再加 noindex。两个信号不要互相矛盾——一边 canonical 指向 A,一边又把 A 标成 noindex,蜘蛛会无所适从。
第四步:让 sitemap 只保留值得抓的 URL
sitemap 是给蜘蛛的优先级提示。把参数页、失效页塞进去,等于主动邀请它去抓没有价值的东西。定期清理,只留需要收录的规范地址。
怎么判断清理有没有生效
不要只盯着索引量,索引量受太多因素影响,波动也大。更直接的观察点是:
- 抓取统计里各类响应码的比例变化,200、301、404、5xx 各占多少;
- 平均响应时间有没有下降;
- 日志里低价值路径的请求次数是否减少;
- 新发布页面的首次抓取时间有没有提前。
这些变化通常要几周才能看出趋势。中间不要频繁改策略,否则分不清是哪个动作起了作用。
几个容易走偏的地方
- 为了省抓取量把所有列表页都 noindex,结果分类页的自然流量一起没了——先想清楚哪些页面有真实检索需求;
- 用 robots.txt 挡住已经索引的页面,以为能删掉它们,实际上索引里还留着;
- 服务器经常超时,却把问题全算在蜘蛛头上——响应速度是抓取频率的基础;
- 只清理 sitemap,不动内链,蜘蛛照样顺着链接爬过来。
抓取配额的优化本质上是一次取舍:把有限的抓取次数,交给用户真正会搜、内容真正会变的页面。
落地时可以先做一件事:从日志里拉出一周的抓取记录,按路径分组,看请求量排在前 20 的是哪些 URL,再判断它们值不值得被这样频繁抓取。这份清单往往比任何理论都更直接。