把页面复制到新模板后,最危险的不是肉眼可见的排版错位,而是正文节点、内链、结构化数据和可索引文本被悄悄替换或剥离。要发现这些隐藏差异,不能只开两个浏览器窗口对照,而应先把旧页和新页各存一份渲染后的HTML,再做逐项差异比对;只有当差异清单稳定、可复现时,才进入修复和验证。
两种做法都合理,但适用条件不同。若新旧模板都由服务端直接输出正文,比对源码就够快,代价是看不到脚本延迟注入的内容;若模板依赖前端脚本拼装正文、推荐位或面包屑,就必须比对渲染后的DOM,否则会把“脚本还没跑完”误判成内容缺失。
判断依据可以看一个信号:在浏览器中禁用脚本后,正文是否仍然完整出现。若完整,先比源码;若不完整,先比渲染结果。这个动作会直接决定下一步:源码差异通常回到模板文件修复,渲染差异则要追到脚本、接口或组件挂载顺序。
不要直接读整页HTML,噪声太大。先分别提取四类对象,各存成一个按顺序排列的清单:标题与各级小标题、正文段落文本、站内链接的锚文本与目标地址、结构化数据块。假设旧页有12个正文段落、8条内链,新页渲染后只剩10个段落、6条内链,这个数量差就是第一层线索,但还不能直接归因于模板删内容,也可能是折叠组件、懒加载或分页脚本造成。
因此第二步是给每条差异标注可能原因,再用可区分证据排除。比如段落减少若伴随“相关阅读”模块增多,可能是组件替换;内链减少若集中在同一目录,可能是链接生成规则变化;结构化数据消失若只在脚本执行后出现,可能是注入时机问题。只有把“现象”和“解释”分开列,后续修复才不会误伤正常改动。
一个务实做法是:对同一URL分别保存改动前和改动后的渲染HTML,用文本差异工具比较。若你没有现成工具,也可以把两份正文复制到同一编辑器,按段落逐行对齐。重点看五类隐藏差异:
<h2>是否被替换成<div>或<p>,使层级关系丢失;这份清单的价值在于可复现:换一台设备、换一个时间点再跑一次,差异项应基本一致。若每次结果都不同,优先怀疑数据采集差异或脚本加载不稳定,而不是立刻改模板。
若差异集中在正文节点和标题层级,先修模板输出逻辑,再抽查同模板下的其他页面,确认不是单页特例。若差异集中在内链和结构化数据,先修生成规则,再检查这些链接是否仍指向有效目标。若差异只在渲染后出现,先修脚本挂载顺序,再复跑同一份差异清单。
验证时不要只看“差异项是否归零”。一次改动前后比较还要考虑季节、搜索需求变化和数据采集差异,所以更稳妥的做法是:固定同一批页面、同一采集方式、同一时间窗口,先确认差异清单稳定,再观察抓取和展示是否同步变化。若请求量或抓取量暂时归零,也不能单独证明处理正确,它也可能是采集延迟、缓存或需求波动造成。
假设某教程页复制到新模板后,正文段落数不变,但所有<h2>都变成了<p>,同时文内6条内链有4条变成图片。此时先修标题层级,因为标题层级影响页面结构理解;修完后复跑差异清单,确认标题恢复且没有引入新的正文节点。再修内链,把图片链接补回锚文本,并检查目标地址是否仍可访问。每一步都留下前后两份清单,下一步才有依据判断是模板问题还是内容本身的问题。
把页面复制到新模板后,真正可靠的做法不是凭感觉浏览,而是先确定比对源码还是渲染结果,再建立可复现的差异清单,按节点、链接、结构化数据和加载方式逐项排除,最后用同一批页面和同一采集方式验证修复是否稳定。