先给结论:报告页数通常统计的是“行”或“记录”,而实际对象数量统计的是“独立目标”,两者口径不同,不能直接相减或按比例折算。要去重,先确认这份报告是按什么维度导出的,再决定按URL、按参数还是按对象ID合并。下面用一个假设情境把决策过程走完。
假设你负责一个站点的收录与抓取观察,用某款百度优化软件导出一份诊断报告。报告显示有 320 行,但你在站点后台只找到 180 个独立页面。差出来的 140 行,常见来源有三种:
?from=、?utm_ 这类参数的地址被当成不同行。http 与 https、带 www 与不带 www 各占一行。这三种原因对应的去重动作完全不同。如果是参数导致,按参数规则合并;如果是协议变体,按规范化域名合并;如果是重复抓取,则要按时间取最新一条。先判断原因,再动手,否则会把本应保留的独立页面误删。
实际动作是:在导出文件里新增一列,填入每个对象稳定的唯一标识。对页面来说,这个标识通常不是完整URL,而是去掉参数、统一协议与域名后的规范地址;对关键词或任务对象来说,则是系统内部的记录ID。以规范地址为合并键后,原本 320 行可能收敛到 180 行左右。
这个动作的结果会直接影响下一步:如果合并后数量与后台接近,说明差异主要来自地址变体,可以继续按规范地址做后续分析;如果合并后仍明显多于后台,则说明报告里混入了非页面对象,比如图片、接口或已下线记录,需要再按对象类型过滤一次。
上述方法在“同一对象被多次记录”的场景成立,但规模化后会出现例外。比如某些页面确实靠参数区分内容,参数不同就是不同对象,这时按规范地址合并会把有效页面合并掉。再比如多语言站点的同一路径在不同子域下是独立对象,按主域合并同样会出错。
因此边界条件是:只有当参数不影响页面主体内容、协议与域名变体指向同一资源时,才适合合并。判断依据是抽查若干组“被合并”的地址,确认它们返回的内容是否一致。如果抽查发现内容不同,就应保留为独立对象,并改用更细的合并键,比如加上语言或地区标识。
如果按上述步骤处理后,报告独立对象数仍与后台不一致,不要急着认定哪一方错了。常见合理解释包括:报告覆盖的时间窗口与后台快照时间不同;后台只统计已发布对象,报告包含草稿或已删除对象;报告抓取范围包含了站点地图之外的地址。
此时的动作是固定一个时间点,让报告与后台都按同一时间范围导出,再比较。若差异缩小,说明是时间口径问题;若差异不变,再逐条比对多出来的对象类型。这个过程不需要一次性全量核对,先抽 20 到 30 条样本定位差异类型即可,样本确认后再决定是否全量处理。
去重的目的不是让数字变小,而是让“一行”对应“一个可决策的对象”。只要合并键选对、边界条件写清,报告页数与实际对象数量不一致就不再是错误,而是一个需要说明的口径差异。