抓取失败和收录是两件事,但会互相牵连
搜索引擎处理一个 URL,大致分两步:先抓取,再判断是否值得进索引。抓取失败发生在第一步,单次失败通常没有后果,爬虫下次还会来。麻烦在于失败变成常态:某个目录下的地址反复超时或返回 5xx,爬虫会降低访问频率,新页面被发现的间隔被拉长,已经收录的页面也可能因为拿不到最新版本而停在旧快照。
抓取是入口,收录是结果。入口偶尔堵一次,结果不会立刻变;持续堵,结果就会慢慢变差。
抓取失败拖慢收录的三种表现
- 新页面发现变慢:sitemap 提交了,日志里也见到爬虫,但请求反复超时或返回 5xx,URL 一直停在「已发现」状态。
- 索引更新滞后:内容改过之后,搜索结果里长期显示旧标题、旧摘要,因为爬虫没取到新版 HTML。
- 抓取量被浪费:同一批地址被反复重试,真正需要抓的页面反而排在后面,配额没变,有效产出变少。
日志里先确认这几组数字
不要只看「今天蜘蛛来了多少次」。按小时或按天统计下面几项,趋势比单日绝对值更有参考价值:
- 状态码分布:2xx、3xx、4xx、5xx 各自的占比,5xx 长期偏高就值得看一眼。
- 响应时间分位:平均值容易被少数快请求拉低,重点看 90 分位和超时次数。
- 失败集中在哪类 URL:是某个栏目、某种参数组合,还是全站随机出现。
- 抓取总量趋势:如果总量在下降、失败率在上升,说明问题已经影响到爬虫的访问意愿。
按这个顺序排查
- 先确认监控和日志是否同源。有些「5xx」来自 CDN 或负载均衡层,源站日志里根本没有这条请求。
- 判断是应用层还是数据层。慢查询和连接池耗尽,往往表现为大面积 504,而不是明确的报错。
- 看是否只有爬虫触发的路径慢,比如带参数的筛选页、站内搜索、需要实时计算的列表页。
- 检查反爬和限流规则是否误伤,频率限制、UA 判断、IP 封禁都可能让爬虫拿到 403 或空响应。
- 最后才考虑服务器规格。多数「扛不住」的情况,真正原因是某个页面没做缓存或某个查询没加索引。
恢复期做什么、不做什么
问题修好后不必急着加动作,爬虫的访问频率通常会自己回升,时间从几天到几周不等,取决于站点规模和过去的稳定程度。可以做的:
- 把确实需要收录的 URL 重新整理进 sitemap,去掉已经下线的地址。
- 确认重要页面现在返回 200,并且服务端返回的 HTML 里就有正文内容。
- 用抓取工具模拟一次请求,确认状态码和响应时间正常。
不建议做的:因为着急收录而临时放开大量本不该收录的页面,或者用 noindex、robots.txt 遮挡来「减轻压力」。这些手段会改变站点的收录结构,恢复起来比修服务器麻烦得多。
观察窗口要给足
修复后至少观察一到两周再下结论。单日数据波动说明不了什么,要看的是失败率是否回落、抓取总量是否回升、新页面是否开始进入索引。三者方向一致,才说明这次调整确实生效了。