确认动态页面可见内容,核心是检查“渲染后”的DOM,而不是直接看HTML源码。对依赖JavaScript加载商品、价格、库存的网店页面,搜索引擎抓取到的初始HTML往往只有框架和脚本,真正内容要等脚本执行后才出现。因此要用能执行JavaScript的方式抓取,再判断关键内容是否出现在最终DOM中,同时确认这些内容没有被CSS隐藏、没有被条件逻辑挡住、也没有被robots.txt或meta标签阻止索引。
排查时容易混淆三种状态:源码可见、渲染后可见、用户视觉可见。动态页面的商品标题可能只存在于接口返回的JSON里,源码中看不到;渲染后DOM里出现了,但被display:none隐藏;或者只在用户点击“展开详情”后才插入。搜索引擎主要依据渲染后的DOM判断内容,所以要以渲染结果为准,同时排除隐藏元素。
只有同时满足“渲染后存在”和“视觉可见”,才算稳妥的可见内容。若只满足前者,可能被判为隐藏文本;若只满足后者,则可能是脚本尚未执行完成的假象。
用命令行抓取工具时,普通curl或只看源码的方式无法执行脚本,容易误判。可以选用支持无头浏览器的抓取方式,例如通过浏览器开发者工具的Network面板查看接口数据,或使用能等待渲染完成的抓取脚本。判断步骤如下:
适用条件是页面内容确实由脚本生成。如果关键字段在初始HTML里就有,说明属于服务端渲染,检查重点转为是否被隐藏或被条件屏蔽。判断结果:渲染后DOM中能稳定搜到关键字段,且元素有实际尺寸,才可认为对抓取友好。
内容出现在DOM里不等于可见。常见隐藏方式包括display:none、visibility:hidden、opacity:0、零高度、移出视口、被其他元素覆盖。此外,有些页面按登录状态、地区、库存、设备类型决定是否渲染价格或购买按钮。若抓取环境未登录或地区不符,看到的可能是缺省占位,而非真实可见内容。
robots.txt是否屏蔽了相关脚本或接口路径,以及页面是否有noindex。注意,robots.txt限制抓取不等于能从索引中移除已有页面。若关键内容只在点击后出现,例如“查看尺码表”才加载,需要判断该内容是否属于页面主体。如果它只是辅助信息,影响有限;如果是价格或库存这类核心字段,则应改为默认渲染或服务端输出。
完成调整后,用同一套抓取方式复测,重点看三个信号:渲染后DOM中关键字段存在且为文本;元素在页面中有非零尺寸且未被隐藏;在未登录、目标地区和目标设备下都能稳定出现。若其中一项不满足,说明可见内容仍不可靠。
另外要区分不同搜索引擎的支持差异。有的引擎对JavaScript渲染的等待时间和执行能力不同,同一页面在不同引擎下的抓取结果可能不一致,需要分别用各自官方提供的抓取测试或日志核查,不能凭一次结果推断全部。站点地图和提交收录只能辅助发现URL,不保证收录或排名。
下一步,挑一个动态商品页,按上面的Elements搜索、无头抓取、隐藏样式检查三步做一次完整复测。把渲染后仍缺失或被隐藏的字段列出来,优先改为服务端输出或默认渲染,再复测验收信号。