页面能不能被收录,前面还有一步很容易被忽略:蜘蛛来抓的时候,服务器到底回了什么。响应状态和响应速度,直接决定了这次抓取是有效、被放弃,还是被延后。
先分清:抓取失败和内容不合格是两回事
内容质量的问题,通常发生在蜘蛛已经拿到页面之后。而服务器响应的问题发生在更早的阶段——蜘蛛连页面都没完整拿到,后面的判断根本无从谈起。所以当一批页面集体没收录时,先看日志里这些 URL 的响应,往往比直接改内容更快找到线索。
几种常见的响应情况
5xx 与超时
服务器错误和响应超时,对蜘蛛来说属于“没拿到”。偶发一次通常问题不大,蜘蛛会过一段时间再来;但如果连续多次失败,抓取频率会被调低,恢复也需要时间。
429 与限速
返回 429 表示服务器在主动拒绝过多请求。这本身不是错误配置,但如果限速阈值设得比蜘蛛的抓取节奏还紧,正常的抓取也会被挡掉一部分。
200 但内容是空的
状态码是 200,返回的却是一个空壳页面、纯加载动画,或者“内容不存在”的提示。这种软 404 对收录的影响,比直接的 404 更麻烦,因为它看上去是成功的。
403 与反爬拦截
部分站点的防护规则会拦截非浏览器请求。表现是蜘蛛拿到 403,而你在浏览器里访问一切正常。这类问题一般要从日志里才能发现。
状态码与页面真实状态不一致
临时维护却返回 404,永久删除却返回 302,都会让蜘蛛对页面的判断偏离实际。状态码尽量如实反映页面当前是否可用,改动前先想清楚这是临时还是长期。
响应时间:多慢算慢
没有一个绝对阈值,但可以参考两点:一是和站内其他页面比,如果某类页面明显慢很多,优先查这类页面;二是看趋势,同一批页面从 200 毫秒变成 2 秒,比一直稳定在 2 秒更值得关注。抓取资源有限,慢页面会挤占其他页面的抓取机会。
排查顺序建议
- 从日志里筛出未被收录的 URL,看它们最后一次被抓时的状态码和响应时间。
- 区分是整体问题还是个别页面问题。整体偏慢,先看服务器和数据库;个别页面异常,看模板或调用的接口。
- 检查是否有防护、CDN 或 WAF 规则在拦截。可以对比蜘蛛 UA 与普通 UA 拿到的返回结果是否一致。
- 确认修复后,观察日志中该 URL 的响应是否恢复正常,再判断抓取频次有没有回升。
- 不要在响应问题没修好之前反复提交 sitemap 或请求抓取,那只会重复消耗抓取配额。
日志里值得固定观察的几个字段
- 状态码分布:5xx、429、403 的占比变化。
- 响应时间:平均值之外,更要看慢请求的数量。
- 蜘蛛 UA 与 IP 段:确认请求确实来自搜索蜘蛛,而不是被伪装的爬虫。
- 被抓 URL 的类型:是详情页、列表页还是参数页,问题常常集中在某一类。
把“服务器响应”当成收录流程里的第一道过滤,很多莫名其妙的收录问题会变得好解释:不是内容不行,而是蜘蛛根本没拿到内容。
小结
收录是发现、抓取、索引这一串流程的结果,服务器响应卡在抓取这一段。定期从日志回看状态码分布和响应耗时,比等到索引量掉了再回头查,成本要低得多。