动态页面确认可见内容,不能只看浏览器里“看起来有字”。正确做法是:先禁用 JavaScript 获取原始 HTML,再查看渲染后的 DOM,最后对照页面源代码中是否存在可被抓取工具读取的文本。如果原始 HTML 里没有正文,而渲染后才出现,那么该内容对不支持 JavaScript 的抓取方式就可能不可见,这正是许多“网站不被收录原因”排查中被忽略的一环。
多人协作时,运营或设计同事常把“浏览器打开正常”当作交付标准。但动态页面往往先用一个空壳 HTML 加载,再由 JavaScript 请求数据并插入正文。人眼看到的是执行脚本后的结果;而部分抓取请求拿到的是脚本执行前的 HTML。两者可能完全不同。
这里要区分三个层次:
<div id="app"></div>。如果正文只存在于渲染后 DOM,原始 HTML 中没有,那么内容是否可被处理,取决于抓取方是否执行 JavaScript。不同搜索引擎、不同抓取工具的支持情况并不一致,必须分别核查,不能凭一次浏览器测试下结论。
在浏览器中打开动态页面,按 Ctrl+U(Windows)或 Command+Option+U(Mac)查看网页源代码,而不是按 F12 看元素面板。搜索页面中的核心正文词,例如文章第一句话或商品名称。
判断结果:
按 F12 打开开发者工具,在 Elements 面板搜索同一句正文。如果这里能搜到,而第一步搜不到,说明正文由 JavaScript 插入。此时不要立即判定“不被收录”,而应记录:正文由哪个脚本、哪个接口、在什么条件下插入。
多人协作交付时,建议把这一步写成检查项:
可以使用命令行工具获取页面,例如 curl -L 页面地址,观察返回内容中是否有正文。也可以在浏览器设置中临时禁用 JavaScript,再刷新页面,看正文是否仍然可见。假设某商品详情页禁用 JavaScript 后只剩导航和页脚,那么该商品正文对不执行脚本的抓取方式就是不可见的。这个例子只说明检查方法,不代表所有动态页面都会如此。
处理方式取决于业务对实时性的要求,以及团队能改动的范围。常见选择有三类:
选择依据不是“哪种技术更先进”,而是:正文是否必须被抓取、更新频率多高、团队能否维护两套输出、以及目标抓取方实际处理能力。把这些条件写进交付说明,比笼统要求“做好 SEO”更能减少返工。
为了让开发、运营和审核方对同一事实达成一致,每次动态页面交付可以附一张简短记录:
如果页面使用 HTTPS,也不要把它当作收录或安全的充分条件。HTTPS 不保证安全无漏洞或排名,它只是传输层的一项配置。真正要确认的是正文是否出现在可被抓取的那一层。
下一步,选一个当前动态页面,按“原始 HTML—渲染后 DOM—禁用脚本”顺序做一次记录。若原始 HTML 中没有正文,就把结论写成具体缺失范围,而不是“页面没问题”,再交给开发决定采用服务端渲染、预渲染还是分别核查。