先把“页数”和“对象数”当成两个不同口径:报告里的每一行通常是一条抓取记录,而一个真实对象可能对应多行。你不需要先拿到全量数据,只要挑一份报告和一份已知对象清单,做一次可复核的对照,就能判断多出来的行是重复、参数变体还是分页残留,再决定去重键和后续动作。
打开报告,不要急着删行。先看有没有这些字段:完整URL、规范链接、状态码、标题、抓取时间、来源。缺少规范链接和参数信息时,单靠URL字符串去重会把本该合并的对象误删。
把第一行当作样本,追问三个问题:这条记录是“一个页面被抓了一次”,还是“一个对象被多个入口抓到”?如果同一标题、同一正文摘要出现多次,只是URL尾部参数不同,那多半是同一对象的多入口记录;如果标题和正文都不同,更可能是真的两个对象。
这一步的产出不是结论,而是一张字段清单:哪些列能标识对象,哪些列只能标识抓取行为。字段清单决定了后面去重键怎么选。
假设你手头有20个已知对象的清单(可以是手工整理的栏目页,也可以是从其他系统导出的对象ID),报告里对应出现26行。不要直接说“多了6个”,按下面顺序拆:
?page=、?sort=、?utm_这类参数。这个顺序的价值在于:参数变体和分页残留属于“同对象多记录”,而最后剩下的才可能是“口径不一致”。两类问题的处理动作完全不同。
如果缺少规范链接字段,可以退一步用“标题+正文首段哈希”做临时对象键,但要注明假设:标题不重复、正文首段稳定。这个假设不成立时,临时键会误合并,所以只能用于判断差异规模,不能直接当最终去重规则。
去重键没有唯一正确答案,只有取舍。常见三种:
判断依据是:你的报告里,参数变体多还是内容重复多。参数变体多,优先去参数;内容重复多,优先规范链接或对象ID。两者都多时,先分层去重,而不是找一个万能键。
一个可执行动作:先按规范链接去重,统计剩余行;再对剩余行按标题哈希去重,统计第二次剩余。两次剩余数差多少,就说明“标题相同但规范链接不同”的情况有多少。这个差值会影响你下一步是去查规范链接配置,还是去查报告抓取范围。
如果你只有报告、没有后台权限,仍然可以完成三件事:建立字段清单、做最小对照表、跑一次分层去重。做完之后,你能说清“差异主要来自参数变体还是分页”,但不能据此断定报告工具本身有错,也不能断定对象真的缺失。
报告页数归零或某项统计突然下降,同样不能单独证明处理正确。合理的原因还包括抓取范围被缩小、筛选条件被改动、对象被暂时隐藏、报告延迟。要区分这些,需要至少两个时间点的同一份对照表,而不是一次快照。
把这次对照的字段清单和去重键写下来,作为下一次报告的固定检查项。下一次差异缩小时,你才能判断是去重规则生效,还是抓取范围变了——这两者的后续动作完全不同。