确认动态页面的可见内容,不能只看浏览器里显示了什么,而要看搜索引擎抓取到的HTML里有没有这些文字。动态页面常由JavaScript在浏览器端渲染,抓取工具看到的初始HTML可能只有框架和脚本,正文、价格、库存、评论都不在其中。判断方法是:先看原始HTML,再看渲染后的DOM,最后对比两者差异,把“用户可见但抓取不可见”的内容列为优先处理项。
在浏览器中打开目标页面,按 Ctrl+U 查看网页源代码,或用命令行抓取:
curl -s https://example.com/page | grep "目标文字"
要查什么:页面核心内容(标题、正文首段、商品名、价格等)是否出现在原始HTML中。 结果说明什么:如果原始HTML里能搜到,说明内容在服务端已输出,抓取风险较低;如果搜不到,只存在于脚本或接口返回中,就需要进一步确认渲染后是否可见。
用浏览器开发者工具(F12)的 Elements 面板,或通过无头浏览器获取渲染后的HTML:
google-chrome --headless --dump-dom https://example.com/page
要查什么:渲染后的DOM里是否出现第一步中缺失的文字,以及这些文字是否在主要容器内,而不是弹窗、隐藏层或模板字符串中。 结果说明什么:渲染后出现、原始HTML没有,说明内容依赖客户端渲染。此时要判断抓取工具是否会执行脚本,以及执行后是否稳定拿到同一份内容。
display:none、visibility:hidden、opacity:0 或高度为0。结果说明什么:用户需要操作才可见的内容,抓取工具通常不会主动触发;即使渲染,也可能只拿到默认状态下的空白区域。这类内容应改为服务端输出,或至少在初始状态就存在。
查看 robots.txt 是否屏蔽了渲染所需的 JS、CSS 或接口路径。抓取限制不等于索引移除,被屏蔽的资源可能导致页面无法正确渲染,但页面本身仍可能被索引,只是内容不完整。
同时检查站点地图中是否包含该动态页面的可抓取 URL。站点地图不保证收录,它只是发现入口,不能替代对可见内容的确认。
结果说明什么:如果关键脚本或样式被屏蔽,渲染结果可能与用户看到的不一致;如果接口路径被屏蔽,依赖该接口的正文就不会出现。
判断依据是:该内容是否直接决定页面主题是否被理解。如果核心文字只在渲染后短暂出现,或依赖某个接口的实时返回,就应优先改为服务端渲染或静态输出。时间和人手有限时,先修第一类,再修第二类,第三类可以延后。
下一步:选一个动态页面,用 curl 和 --dump-dom 各抓一次,把两次结果中缺失的核心文字列成清单,按上面的顺序逐项处理。