搜索抓取

搜索蜘蛛抓取:软 404 与空壳页面返回 200 造成的抓取预算浪费核对

商品下架、筛选结果为空、参数拼错的页面常常仍返回 200,只剩标题和框架,蜘蛛反复回访却拿不到有效内容。本文梳理软 404 的常见形态、状态码与页面内容不一致的核对顺序,并说明如何配合 Sitemap 与内链清理入口,把抓取预算留给真正需要更新和收录的 URL。

搜索抓取

搜索蜘蛛抓取:软 404 与空壳页面返回 200 造成的抓取预算浪费核对

不少站点在商品下架、库存清零、搜索结果为空、参数页无匹配内容时,页面依然返回 200。用户看到的是「暂无相关内容」,蜘蛛看到的是一个正常的 HTML 文档。这类页面就是通常说的软 404。它不会像 404 那样被明确标记为无效,反而会持续占用抓取预算,反复进入抓取队列。

软 404 为什么会被反复抓取

蜘蛛判断一个 URL 是否还有价值,主要看状态码、页面主体内容、内链指向以及历史上的抓取反馈。当页面返回 200,同时又存在于 Sitemap 或站内链接中,抓取调度就会把它当作正常页面安排回访。回访后如果仍然只是空壳,预算就被消耗在一次没有产出的请求上。

更麻烦的是,这类 URL 往往不是一两个,而是成批出现:筛选参数组合、已下架商品、已过期的活动页,动辄成千上万条。抓取预算被摊薄之后,新页面和真正需要更新的页面,回访间隔会被明显拉长。

常见的软 404 形态

  • 商品或文章已删除,页头页脚完整,正文位置显示「内容不存在」。
  • 搜索、筛选、排序结果为空,模板照常渲染。
  • 活动已结束,页面仅保留标题和倒计时残留。
  • 参数拼错或参数被忽略,返回一个默认列表页。
  • 前端拿不到数据,只在首屏留下骨架屏结构。

核对顺序

  1. 先从抓取日志里筛出回访频繁、但响应体积明显偏小的 URL 段。
  2. 用同一 User-Agent 请求这些 URL,确认返回状态码是否为 200。
  3. 对比正常页面的正文文本长度,判断是否落在空壳区间。
  4. 检查这些 URL 是否仍出现在 Sitemap、内链模块、分页或标签聚合页中。
  5. 确认页面对应数据是永久删除、临时下架,还是参数错误导致。
状态码只是结果,真正要回答的问题是:这个 URL 以后还有没有内容可看。没有内容就该给出明确信号,而不是让它继续被当成正常页面。

按情况给出不同处理

  • 内容永久删除、无替代页面:返回 410 或 404,同时从 Sitemap 和内链中移除。
  • 内容临时下架、预计恢复:返回 503 并带上 Retry-After,不要用 200 硬撑。
  • 参数错误:规范到有效 URL 或返回 404,不要静默兜底成首页或列表页。
  • 搜索结果为空的组合参数页:考虑用 robots meta 的 noindex,并避免在内链中大量暴露。
  • 确实需要保留的聚合页:补上编辑内容或推荐内容,让它不只是空壳。

和内链、Sitemap 一起收口

状态码改对之后,还要把入口一起清理。软 404 大多有多个入口,Sitemap 一份、标签页一份、相关推荐一份。只改状态码而不管内链,蜘蛛仍会顺着旧链接不断找回来。建议按入口类型逐项核对:主导航、面包屑、列表页、标签聚合、站内搜索、Sitemap 分片。

同时留意服务器稳定性带来的干扰。如果节点在数据读取超时后返回了空模板,而不是错误码,就会出现「有时空、有时正常」的现象。核对时要在不同时间点重复请求,避免把偶发问题当成稳定结论。

验证与长期监控

  • 改版后用同一批 URL 复测状态码和正文体积。
  • 观察抓取日志中该 URL 段的回访频次是否下降。
  • 检查抓取量是否向新页面和有更新需求的页面倾斜。
  • 把「状态码 200 但正文过短」做成日常告警项,而不是一次性排查。

软 404 的处理本身不复杂,难的是持续维持。只要页面上线流程里没有「无内容也返回 200」的默认逻辑,这类问题就不会反复出现。