结论先给:如果新旧模板的URL结构、正文来源和渲染方式没有变,隐藏差异通常出在HTML输出层;如果其中任何一项变了,先别比对页面,先确认这三项是否一致。只有三项都一致时,逐层比对HTML才有意义,否则你发现的“差异”可能只是模板迁移的正常结果,而不是需要修复的问题。
网页复制到新模板,表面看是换皮,实际上可能同时换了输出逻辑。判断是否进入细查阶段,看三个条件:
/product/123,新页变成/product/123?tpl=new,或者多了语言前缀,那么页面级比对已经不成立。三项都一致的条件下,隐藏差异才大概率是模板本身引入的。反例是:新模板同时更换了数据源,此时你抓到的正文缺失可能来自接口字段没映射,而不是模板标签写错。这种情况下,先修数据映射,再谈模板比对。
不要用浏览器肉眼比,也不要用不同工具各抓一次。固定一套条件:同一User-Agent、同一地区出口、同一时间窗口、同一是否执行JavaScript的设置。然后按三层比对:
一个实际动作:把旧页和新页的正文容器文本分别提取出来,去掉空白后做逐行对照。如果新页少了一行,而那一行在旧页里是产品规格或服务说明,那么下一步不是改模板样式,而是回到数据映射检查该字段是否被新模板读取。
两种差异的修复方向完全不同,可以用一组可区分的原因来判断:
假设一个例子:旧模板在正文下方固定输出一段“适用条件”,新模板改成只有字段非空时才输出。如果旧页面的该字段本来就为空,旧模板仍然输出,新模板不输出——你看到的差异是模板行为变化,不是内容丢失。此时要决定:是补数据,还是改模板逻辑恢复固定输出。这个决定取决于该段文字对用户是否必要,而不是取决于哪个模板更“正确”。
比对完成后,按发现的问题类型决定动作:
需要注意的是,改动前后比较要考虑季节、搜索需求变化和数据采集差异。一次抓取量下降或某页面表现波动,不能单独证明模板迁移处理正确或错误,还需要排除需求波动和采集口径变化。因此,修复后不要只看一天的数据,至少保留一个可回退的检查点:记录修改前的HTML快照和修改后的HTML快照,确认差异确实按预期消失,再决定是否继续迁移其他页面。