确认动态页面可见内容,不能只看浏览器里显示了什么,而要看“最终返回给抓取工具的 HTML 里有什么”。动态页面常见的情况是:首屏由 JavaScript 在浏览器端渲染,服务器返回的初始 HTML 里没有正文。要确认可见内容,核心动作是关闭 JavaScript 或直接查看原始响应,再与渲染后的页面做对比。下面这份清单按“查什么、怎么查、结果说明什么”组织,适合多人协作时逐项交接。
查什么:该 URL 的初始 HTML 响应中,正文、标题、主要链接是否已经存在。
怎么查:用命令行工具请求该地址,把响应保存下来再查看。例如:
curl -s https://example.com/page > page.html
然后在保存的文件里搜索页面上肉眼可见的一段正文文字。如果这段文字在文件里搜不到,说明它依赖脚本执行后才出现。
结果说明什么:原始 HTML 里没有正文,不等于页面一定不可见,但意味着可见内容依赖渲染环节。协作交付时应把“渲染前”和“渲染后”两份结果都留档,避免一方说“页面明明有内容”、另一方说“抓不到”的返工。
查什么:JavaScript 执行完成后,DOM 中是否出现目标正文、链接和结构化数据。
怎么查:在浏览器开发者工具中打开目标页面,用元素检查器定位正文节点,确认它是初始 HTML 就有的,还是脚本插入的。也可以禁用 JavaScript 后刷新页面,观察内容是否消失。
结果说明什么:禁用脚本后正文消失,基本可判断为客户端渲染。此时需要确认抓取与渲染流程是否覆盖该页面。若正文在渲染后出现、且链接是可抓取的 <a> 标签,可见内容的交付就相对完整;若正文由点击或滚动后才加载,则要单独标注触发条件。
查什么:该路径是否被 robots.txt 禁止抓取;是否存在登录墙、验证码或频次限制导致抓取工具拿不到内容。
怎么查:访问站点根目录下的 robots.txt,找到对应 User-agent 段和 Disallow 规则,逐条比对目标路径。同时用未登录状态直接请求页面,确认返回的是正文还是拦截页。
结果说明什么:robots.txt 的抓取限制不等于可靠的索引移除,它只表达抓取意愿,不保证页面从索引中消失。反过来,页面被 robots.txt 禁止抓取时,渲染流程也拿不到内容,可见性判断就失去了前提。这一步要写清结论是“抓取被禁止”还是“抓取正常但内容未渲染”,二者处理方式完全不同。
查什么:动态页面是否出现在站点地图中,是否有可抓取的内部链接指向它。
怎么查:打开站点地图文件,搜索目标 URL;再在站内找一个相关页面,查看其 HTML 中是否存在指向该动态页的 <a href>。
结果说明什么:站点地图不保证收录,它只是提交发现线索。如果页面既不在站点地图中,也没有任何静态可抓取的内部链接,仅靠脚本跳转到达,那么发现环节就存在断点。协作时应把“可发现”和“可渲染”分开记录,避免把两类问题混成一条待办。
查什么:目标 URL 是否返回 200 状态码,是否存在证书错误、重定向链过长或混合内容。
怎么查:用命令行查看响应头:
curl -sI https://example.com/page
关注第一行状态码和 Location 头。若出现 301、302 链,逐跳跟随,确认最终落地页与预期一致。
结果说明什么:HTTPS 不保证安全无漏洞或排名,它只说明传输层加密。状态码异常、重定向指向错误页面,会让抓取工具停在非目标页,此时讨论正文可见性没有意义。先修通访问,再判断渲染。
多人协作减少返工的关键,是每项检查都留下可复核的证据。建议按以下字段记录:
下一步,选一个具体的动态页面,按上面顺序跑一遍:先取原始响应,再对比渲染后 DOM,最后核对 robots.txt 和状态码。把两次结果贴进同一份记录里,再决定是改渲染方式、补内部链接,还是先修访问问题。