报告里的页数大于你实际拥有的对象数量,通常不是工具算错,而是同一对象被多种标识重复计数。去重的关键不是删掉多余行,而是先确定“什么算一个对象”,再让报告口径与这个定义对齐。下面以一个假设的页面清单为例,说明从核对到落地的处理顺序。
同一个URL带不同参数、http与https并存、末尾斜杠有无、大小写差异,都可能被当成不同页。带筛选参数的商品列表、分页参数、跟踪参数尤其容易制造重复。如果报告页数接近实际对象数的两倍,优先怀疑协议或参数变体;如果只多出少量,先看是否有测试页、占位页或已下线但仍被引用的地址。
还有一种常见情况:实际对象本身就有多个入口。比如一个商品同时有PC页和移动页,或者一个文档有多个语言版本。此时“去重”不是简单合并,而是先决定这些入口算一个对象还是多个对象。这个决定会直接影响后续所有处理动作。
先给每条记录补三列:规范化地址、对象ID、来源标记。规范化地址用于合并同一对象的不同写法;对象ID用于判断是否真的指向同一个实体;来源标记用于记录这条记录来自站点地图、内链还是外部引用。三列齐全后,重复项会自然暴露。
规范化时按顺序处理:统一协议、去掉跟踪参数、统一末尾斜杠、统一大小写、解析重定向到最终地址。注意,这一步只做机械归一,不要顺手删掉有业务含义的参数,比如分页参数或筛选参数。假设某列表页有20个筛选组合,机械归一后可能只剩一个地址,但用户实际访问的是20个不同结果页,这种合并会掩盖真实结构。
去重前先回答一个问题:两个地址返回的内容是否实质相同,且用户不需要分别访问?如果内容相同、只是入口不同,可以合并为一个对象;如果内容不同、只是主题相近,就不能合并。判断依据可以看标题、主要正文、结构化数据中的标识字段是否一致。
这个分类动作的结果,会决定下一步是改站点地图、改内链,还是改报告口径。如果跳过分类直接删行,很可能把有独立价值的入口一并删掉。
假设你手上有100条报告记录,实际对象是70个。先取其中20条做样本,按上面的规则手工归类,看看合并后剩下多少条。如果20条合并后是14条,而实际对象在这20条中对应15个,说明规则可能过度合并;如果合并后是15条,与实际一致,就可以把这套规则套用到剩余记录。
样本验证时要记录每次判断的理由,尤其是那些边界情况。比如一个带?page=2的地址,如果它返回的是同一列表的第二页,且第二页有独立内容,就应算作独立入口;如果它只是把第一页内容重复输出,就应合并。这个判断没有统一答案,取决于站点实际返回的内容。
去重完成后,至少要做三件事:更新站点地图,只保留主地址;检查内链,把指向重复地址的链接改为指向主地址;在报告模板中增加规范化字段,让下次查询直接按对象ID聚合。这样处理之后,报告页数会接近实际对象数,后续的抓取和索引分析才有稳定基数。
如果去重后数量仍然偏高,不要立刻认定工具出错。先检查是否有大量低质页面、测试页或已被屏蔽但仍被引用的地址。这些页面可能确实存在,只是不该进入正式清单。把它们单独列出来,而不是混在对象数里。
最后要明确边界:这套方法适用于你能直接控制地址和内容的站点。对于第三方平台页面或无法修改的聚合页,只能做观测和标注,不能强行合并。报告页数与实际对象数量不一致,本身不是错误,而是一个需要先定义口径、再决定取舍的信号。