动态页面要确认可见内容,不能只看浏览器里是否显示,而要看返回给爬虫的HTML里是否真的含有目标文字。做法是:用“查看网页源代码”或curl抓取原始响应,再搜索正文关键词;如果能搜到,说明内容在初始HTML中可见;如果搜不到、只在渲染后才出现,就要把它当作需要额外处理的动态内容。
动态页面的“可见”至少有三层含义,混在一起判断就容易出错。
对动态页面来说,真正要确认的是第二层和第三层。浏览器可见不等于原始HTML可见,原始HTML可见也不等于一定被收录。收录还受robots.txt、页面质量、链接关系等影响,但“内容是否出现在响应里”是可以自己先验证的。
这是时间和人手有限时最先做的检查,成本最低。
判断结果:源代码能搜到,说明该内容属于初始响应,抓取时较容易被读到;源代码搜不到而Elements能搜到,说明它依赖渲染,需要进一步确认抓取端是否执行JavaScript。
浏览器可能命中缓存或本地脚本,命令行抓取更接近服务器真实返回。可以用curl把响应保存下来检查:
curl -s -A "Mozilla/5.0" https://example.com/page > page.html
然后在page.html里搜索目标文字。适用条件是页面不需要登录、没有强依赖Cookie或复杂交互。如果返回的是空壳HTML、只有<div id="app"></div>这类容器,就说明正文由前端脚本填充。注意,curl默认不执行JavaScript,这正好用来区分“服务器给了什么”和“浏览器补了什么”。
如果站点有反爬限制,curl可能拿到验证页而不是真实内容,这时要换用带渲染能力的抓取方式再对比,不能直接把验证页当作页面本身。
不同搜索引擎对JavaScript渲染的支持程度不同,必须分别核查,不能用一个引擎的结果推断另一个。可行的判断方法有:
这些信号只能说明“抓取端看到了什么”,不能保证收录或排名。robots.txt里的抓取限制也不等于可靠的索引移除,它只约束抓取行为,已收录页面仍可能保留一段时间。
人手有限时,按影响面从大到小处理:
验收信号是:再次用curl抓取,目标文字出现在响应HTML中;用查看源代码搜索,同样能搜到;搜索引擎的抓取测试显示的内容与页面主体一致。满足这三点,才可以说动态页面的可见内容已经确认到位。
下一步,挑一个你认为最重要的动态页面,先做“查看源代码搜索目标文字”这一步,把结果记下来,再决定是否需要改渲染方式。