要确认动态页面的可见内容,不能只看浏览器里是否显示,而要把“用户看到的渲染结果”和“爬虫可获取的HTML”分别检查。动态页面常见做法是用JavaScript在浏览器端填充内容,因此直接查看源代码可能只有空壳。判断起点是:先确认内容是否依赖脚本生成,再检查渲染后的DOM中是否有实际文本和内链,最后用抓取工具或渲染测试验证。
在浏览器中打开目标页面后,按以下步骤观察:
这一步的结论是:源代码有内容,说明基础HTML已包含可见文本;源代码没有而DOM有,则要进入渲染抓取检查。注意,DOM中看到内容不等于搜索引擎一定按同样方式看到,需要进一步验证。
内链是动态页面确认可见内容的重点,因为链接如果只在点击后由脚本生成,爬虫可能无法发现目标页。可以执行以下检查:
<a href>,确认链接地址是真实URL,而不是javascript:void(0)或仅绑定点击事件。判断结果:如果关闭JavaScript后内链仍在,说明基础HTML已包含链接;如果消失,则需要为爬虫提供可抓取的链接形式,例如服务端渲染、预渲染或在HTML中放置基础导航链接。适用条件是内容确实需要动态交互,而不是为了视觉效果强行隐藏链接。
不同搜索引擎对JavaScript渲染的支持程度不同,不能假定所有爬虫都会执行脚本。可以使用的核对方法包括:
<a href>。如果渲染后HTML中仍没有可见内容,可能原因包括:脚本被robots.txt阻止、接口需要登录、内容在用户交互后才加载。需要区分“可能原因”和“已经定位的原因”:只有日志或抓取快照明确显示脚本被阻止,才能说这是已定位原因。robots.txt的抓取限制不等于可靠的索引移除,站点地图也不保证收录。
确认问题后,按优先级处理:
复查标准是:关闭JavaScript时页面仍有核心文本和内链,或者抓取快照中能稳定找到这些内容。HTTPS不保证安全无漏洞或排名,它只解决传输加密问题,不能替代内容可抓取性检查。若动态页面同时使用多个搜索引擎,应分别核查其渲染支持情况,不能用一个平台的结果推断另一个平台。
下一步:选一个动态页面,先查看源代码中是否有主正文和内链,再打开开发者工具对比DOM,最后用抓取工具的渲染快照复查。把“源代码有、DOM有、抓取快照有”三项结果记录下来,就能判断当前可见内容是否真正可被发现。