把旧页面的正文复制进新模板后,最危险的不是排版错乱,而是肉眼看不见的差异:标题层级被模板改写、正文里混进了模板自带的推荐模块、原本的段落顺序被拆散。要发现这些差异,不能靠浏览页面外观,而要把新旧两版的渲染结果按同一规则提取出来逐项比对。下面给出两种可行做法的取舍条件,以及一个可直接执行的最小验证动作。
截图对比只能发现视觉变化,无法暴露隐藏差异。真正影响抓取与理解的是提取后的文本序列和标签层级。做法是分别保存旧页面和新页面的HTML,用同一套规则去掉导航、页脚、侧栏,只留下主体区域,再把标签压平成带层级标记的文本行。例如把<h2>记为H2、<p>记为P,逐行排列。两份结果放在一起看,标题数量、段落顺序、空段落、被模板塞入的模块会立刻显形。
这个动作的代价是需要一点手工整理,收益是差异位置可定位到具体行,而不是"感觉哪里不对"。如果页面数量少、改动只涉及一篇,这一步值得做;如果整站几百篇同时迁移,逐篇提取不现实,就要改用下面的抽样加规则比对。
适用前提是旧页面的标题层级和段落顺序本来就是对的,迁移只是换外观。此时应该做的是让新模板不介入内容结构:把正文作为一个整体块插入,而不是拆成模板预设的多个字段。需要确认的是模板是否会自动给首段加样式类、是否会把第一个<h2>提升为页面主标题、是否在正文末尾追加相关阅读。
取舍的代价在于:保留旧结构可能让新模板的响应式样式失效,某些模块显示异常。判断条件很简单——如果旧页面在百度已有稳定表现,而迁移目的只是视觉升级,优先保留结构;如果迁移同时要改信息架构,保留旧结构反而会制造两套并存的层级,这时应选第二种做法。
适用前提是旧结构本身混乱,或者新模板要求固定的模块顺序。重写时必须逐项确认三件事:标题是否仍从<h2>开始而不是跳到<h3>;正文是否被模板的摘要字段截断;列表是否被转成无层级的段落。重写后隐藏差异往往出现在"看起来更整齐"的地方,比如模板自动把长段落切成两段,或把加粗文字转成了独立小标题。
代价是重写引入了新的出错面,且旧页面原有的内部锚点可能失效。如果旧页面有站内其他页面链接到它的某个小节,重写后这些锚点需要同步检查,否则会形成死链。
假设有十个页面从旧模板迁到新模板,可以先取其中三个:一个正文最长的、一个含列表和图片的、一个原本排名就靠后的。对这三个页面执行提取比对,记录差异条数。如果三个页面都在同一位置出现同类差异——例如模板统一在正文首段前插入了面包屑文本——说明这是模板级问题,应在模板层修正,而不是逐页修补。如果差异各不相同,说明问题出在复制环节,需要回到逐页核对。
这个动作的结果直接决定下一步:模板级问题改一处即可覆盖全部页面,逐页问题则要考虑是否值得投入。比对时还要注意,迁移前后如果跨了较长周期,百度指数或流量数据的变化可能来自搜索需求本身的波动,不能把归零或下降单独当作结构处理正确的证据,也不能把某次抓取量上升直接归因于这次改动。
发现差异后不要急于全部修正。先判断哪些差异会影响用户阅读,哪些只是源码层面的冗余。影响阅读的优先处理,纯冗余的可以记录后观察。如果迁移后需要长期维护,建议把提取比对这个动作固化成迁移流程的一步,而不是等问题出现后再回头排查。