动态页面确认可见内容,不能只看浏览器里有没有字。更可靠的做法是:先看服务器返回给爬虫的原始 HTML,再判断正文是随 HTML 一起返回,还是必须执行 JavaScript 后才出现。如果原始 HTML 里没有正文,而页面又依赖脚本渲染,那么对爬虫来说它可能接近空页;这时应优先检查渲染后的内容是否可抓取,而不是急着清理死链接。
同一个动态页面,在三个层面可能得到不同结果:
判断死链接时,如果只依据浏览器截图,很容易把“渲染后可见”误判为“内容正常”。真正要确认的是:页面上的链接和正文,在爬虫可获取的版本里是否存在、是否指向有效地址。
最直接的办法是做一次对照检查。假设有一个商品列表页,正文和分页链接都由脚本生成,可以这样操作:
判断结果很明确:原始 HTML 中有,说明不依赖渲染;只有渲染后有,说明需要确保抓取端能执行脚本;两者都没有,则不能把它当作可见内容来处理。这里的代价是,渲染抓取更慢、更耗资源,适合正文和链接确实重要的页面;如果只是少量页面,人工抽查也可以。
动态页面里的链接经常由脚本拼接,例如把编号拼进地址。确认这类链接时,不能只看链接文字是否显示,还要看它最终指向哪里。检查项包括:
如果链接指向的目标已经不存在,它就是死链接;如果链接本身没有生成出来,则属于可见内容缺失。两者处理方式不同:前者要修复或移除链接,后者要先解决渲染和输出问题。
优先顺序可以按影响面判断:
如果人力只够做一件事,就先抽查网站主要入口和列表页的原始 HTML,看正文与链接是否直接可见。这个检查成本低,而且能快速区分“页面真的空”还是“只是浏览器里看起来正常”。
robots.txt 的抓取限制不等于可靠的索引移除,页面被限制抓取后仍可能以其他方式出现;站点地图不保证收录;HTTPS 也不保证页面内容一定可见。确认动态页面时,应分别核对抓取、渲染和链接目标状态,不要用单一信号下结论。
下一步可以选一个动态列表页,分别保存原始 HTML 和渲染后的 HTML,搜索同一个正文短语和一个分页链接,比较两者差异。这个结果会直接告诉你:当前最该修的是渲染输出,还是已经暴露出来的死链接。