确认动态页面在索引优化中是否真的可见,不能只看浏览器里显示的内容,而要看搜索引擎抓取时拿到的HTML里有什么。做法是:用抓取工具或查看源代码的方式获取“无JavaScript执行”和“执行JavaScript后”两个版本的HTML,再对比正文、标题、链接是否出现。如果正文只在执行脚本后出现,那么这个动态页面对依赖HTML解析的抓取流程就存在可见性风险。
用户打开页面看到内容,可能是浏览器执行JavaScript、调用接口后渲染出来的。抓取程序拿到页面时,可能只看到一段空容器或加载提示。两者不是一回事。
判断时至少收集三类证据:
如果原始HTML里没有正文,只有<div id="app"></div>这类空壳,就不能直接认定页面内容已对抓取可见。渲染后出现内容,只能说明支持渲染的抓取流程可能读到,仍需分别核查不同搜索引擎的实际处理情况。
可以按下面的步骤实际执行:
<a href>。判断结果时注意:原始HTML有正文,说明基础可见性较好;原始HTML没有、渲染后有,说明依赖渲染,需要进一步确认抓取端是否执行脚本;两者都没有,则可能是接口鉴权、地区限制、爬虫拦截或内容确实未输出。
正文没出现在抓取结果里,可能原因不止一个,需要逐项排除:
这些是可能原因,不是看到空HTML就能断定的结论。要定位到具体原因,需要看服务器日志、抓取响应状态和接口返回,而不是只凭页面截图判断。
如果由开发或SEO协作处理,验收不应写成“做好动态渲染”,而应写成可核对的结果:
<a href>形式出现在原始HTML中,而不是只在点击后由脚本跳转。责任划分上,前端负责让关键内容可被服务端输出或预渲染,SEO负责给出URL清单和验收样本,运维负责确认抓取请求没有被误拦。三方用同一批URL和同一份对比表验收,避免各看各的界面。
页面能被抓取,不等于一定被收录;被收录,也不等于收录版本展示了完整正文。核查时应分别记录:抓取是否成功、索引是否包含、结果摘要展示的是动态内容还是空壳。若收录版本只显示导航和页脚,说明索引优化还没有解决动态正文的可见性问题。
下一步可以选一条最重要的动态页面,按“关闭JavaScript请求—开启渲染请求—对比正文与内链—查抓取日志”的顺序做一次完整记录。拿到两份HTML差异后,再决定是改为服务端输出、预渲染,还是调整抓取与索引策略。