网站收录

蜘蛛抓到了 200 却索引为空壳:先分清抓取成功与渲染成功

页面返回 200,日志里也有抓取记录,但搜索索引里的标题和摘要却像空壳。这通常不是单纯的“没收录”,而是抓取成功、渲染失败或内容未被解析。本文按响应、渲染、内容可见性三层排查,区分抓取与收录的边界,并给出可落地的检查顺序。

网站收录

蜘蛛抓到了 200 却索引为空壳:先分清抓取成功与渲染成功

日志里能看到蜘蛛抓取,页面也返回 200,但在搜索索引里标题和摘要像空壳,这种情况常被笼统归为“没收录”。实际上,抓取成功只是请求环节通过,后面还有解析、渲染、内容理解与索引选择。把这几步混在一起,就容易在错误的方向上反复调整。

先分清:抓取成功不等于内容被读到

返回 200 只代表服务器接受了请求。如果页面依赖 JavaScript 渲染,而渲染所需的脚本、样式或接口被屏蔽、超时,蜘蛛拿到的可能只是一个空容器。此时日志里有抓取记录,但内容并没有真正被读到。

  • 查看原始 HTML:正文是直接存在,还是只有占位标签和脚本。
  • 检查 robots.txt:是否误屏蔽了 JS、CSS 或提供数据的接口路径。
  • 确认渲染依赖:是否依赖第三方脚本,而第三方加载不稳定。
  • 检查访问条件:内容是否需要登录、点击或滚动后才出现。

渲染成功,也可能被当作低价值页面

即便正文能渲染出来,如果主体内容占比低、广告和导航过多,或者同模板页面高度重复,搜索系统也可能只抓取不索引。这时问题不在抓取通道,而在页面质量与索引选择。

  • 首屏可见的正文是否足够,还是需要大量滚动才能看到。
  • 核心内容是否被弹窗、浮层或自动播放模块遮挡。
  • 同一模板下是否批量生成相似正文,缺少独立信息。

按顺序排查,别把渲染问题当成收录问题

  1. 用抓取工具或日志确认蜘蛛拿到的 HTML 是否包含正文。
  2. 对比“原始 HTML”和“渲染后 DOM”,定位正文从哪一步消失。
  3. 检查 robots、UA 识别、CDN 是否对蜘蛛返回了不同版本。
  4. 确认内容可见性,必要时改为服务端渲染或预渲染关键页面。
  5. 最后再看内链入口,避免把渲染失败误判为孤岛页面。
抓取是请求,收录是理解与选择。把两者混在一起,排查就会绕圈。

检查时容易忽略的两种差异

一种差异是不同 UA 返回不同内容。有些站点对普通用户和蜘蛛返回的 HTML 不同,若配置不当,蜘蛛拿到的版本可能缺少正文。另一种差异是缓存。CDN 或页面缓存可能存了旧版本或空壳版本,蜘蛛每次拿到的都是同一份错误内容。

  • 用相同 UA 测试,对比返回内容是否一致。
  • 清理相关缓存,观察下次抓取是否变化。

能落地的调整方向

优先保证关键页面有稳定的服务端输出,至少让主体内容在原始 HTML 中可见。对必须依赖 JS 的页面,确保渲染资源不被屏蔽,并减少首屏对第三方脚本的依赖。如果页面本身内容单薄,先补充真实有用的信息,再谈索引表现。

索引状态会随时间和内容变化,处理完一轮后,观察日志和索引表现,不要期待一次调整就立刻改变。记录每次改动的日期与观察结果,方便对比。抓取与收录之间的链路较长,按层排查比反复提交更有效。