网站收录

正文靠 JS 渲染:收录结果里内容缺失的排查顺序

页面在浏览器里看着正常,搜索结果的摘要或快照却只剩标题和空框架。这类情况多半不是没收录,而是渲染环节出了问题。本文按先确认现象、再顺着渲染链路排查、最后决定哪些内容改直出的顺序,给出一套可执行的检查方法。

网站收录

正文靠 JS 渲染:收录结果里内容缺失的排查顺序

有些页面在浏览器里看很正常,标题、正文、参数表都在,但在搜索结果摘要或缓存快照里只剩标题和一段空框架。这种情况容易被误判成“页面没被收录”,于是反复提交、改内链,方向其实偏了。多数时候页面已经进了索引,只是抓取时能读到的内容不完整。

先分清两种现象

第一种:页面压根没进索引,直接搜标题也找不到。第二种:页面在索引里,但保存的版本内容缺失,摘要空洞,或者只剩导航和页脚。这两类问题的处理顺序完全不同,前者优先查发现和抓取,后者优先查渲染。

怎么区分?用站长平台的 URL 检查类工具查一下,或者搜页面标题加一句正文里的独特表述,看摘要能不能对上。如果摘要里出现的词只来自标题和 meta 描述,正文一句都没带出来,基本可以判断卡在渲染环节。

检查渲染链路,按这个顺序看

1. JS、CSS 资源是否被屏蔽

渲染页面需要先拿到脚本和样式资源。如果 robots.txt 里顺手屏蔽了 js、css 目录,或者静态资源放在另一个被屏蔽的子域上,渲染就会停在半路。检查一下有没有针对 .js、.css 或静态资源域名的 Disallow 规则。

2. 内容是不是交互后才出现

  • 点击“展开更多”才加载的正文
  • 切换标签页才显示的规格参数
  • 滚动到底部才触发的接口请求

这类设计对用户没问题,但抓取时不一定有人去点。需要操作才出现的内容,被读到的概率明显更低。

3. 接口是否依赖登录态或环境

如果正文来自接口,而这个接口需要登录 Cookie、特定地区 IP,或者依赖浏览器本地状态,抓取时就可能返回空数据或错误码。可以在无登录、无 Cookie 的环境下直接访问接口地址验证。

4. 是否存在超时和报错

渲染有时间预算。脚本体积大、串行请求多、第三方统计脚本又慢,正文可能还没渲染出来,抓取就已经结束。查看服务器日志里这些资源的响应时间和状态码,能看出不少问题。

要不要改成服务端直出

不是所有 JS 渲染的内容都必须改。判断标准可以简单一点:这段内容对你重不重要。

  1. 核心正文、商品参数、价格、常见问答这类决定页面价值的部分,建议直接写在 HTML 里,或者做服务端渲染、预渲染,让抓取时就能拿到。
  2. 评论、推荐位、个性化模块这类次要内容,晚一点加载影响不大。
  3. 暂时不改架构的话,至少保证首屏 HTML 里有一段和主题强相关的文字,不要全靠脚本填充。
能被稳定读取的内容,通常就是直接写在 HTML 里的那一部分。渲染是补充,不是唯一来源。

处理顺序小结

  1. 先确认是“没收录”还是“收录了但内容缺失”,别混在一起查。
  2. 查 robots.txt 是否挡住了 JS、CSS 和静态资源域名。
  3. 确认正文是否依赖点击、滚动、登录态等条件才出现。
  4. 检查接口在无 Cookie、无登录环境下能否正常返回。
  5. 看渲染耗时是否超出抓取的时间预算。
  6. 最后再决定哪些模块改直出、哪些保持异步加载。

几个常见误区

  • 以为改一下 meta 描述就能让摘要变完整,其实摘要要有正文可取才有内容。
  • 以为多提交几次 sitemap 能解决,渲染问题不解决,提交多少次都一样。
  • 把所有异步加载都当成问题,次要模块异步加载是正常做法。

整体思路一句话:先分清现象,再顺着渲染链路往上查,最后只改真正影响内容可读性的那部分。