自动导出遗漏分页,往往不是工具“坏了”,而是导出上限、分页游标或去重规则三者之一在起作用。要判断完整性,不能只看总条数,而应把导出结果与分页清单做交叉核对;如果分页清单本身缺失,任何条数比对都会失效。下面给出可核对的判断路径和会推翻结论的反例。
关键词采集工具的导出链路通常有三层:抓取到的分页、进入导出队列的记录、最终写入文件的记录。三层都可能丢数据,但表现不同。抓取层漏页时,分页清单里就找不到该页;队列层丢数据时,清单完整但导出条数少于清单累计;写入层出错时,文件可能被截断或编码异常。
一个可操作的动作是:在导出前先让工具输出分页清单,而不是直接导出结果。清单至少包含页码、该页记录数和采集时间。拿到清单后,把每页记录数相加,与导出文件的行数比较。如果两者一致,说明遗漏发生在抓取层;如果清单累计大于文件行数,问题在队列或写入层。这个结果决定了下一步是去查抓取配置,还是查导出参数。
总条数相同不代表内容完整。两个分页可能因为去重规则把不同记录合并,导致条数对得上但内容缺失。更可靠的做法是给每页生成一个指纹,例如该页首条和末条记录的稳定标识拼接后的哈希值。导出完成后,逐个核对每页指纹是否都能在导出文件中找到对应记录。
假设某次导出显示 12 页、共 480 条,导出文件也是 480 行,但第 7 页的指纹在文件中找不到。这说明第 7 页被另一页的重复记录顶替了,属于内容层面的遗漏。此时应检查去重键是否只用了关键词文本,而没有把来源、时间或分页位置纳入。把去重键改为复合字段后重新导出,再核对指纹,才能确认是否真正补齐。
即使分页清单、指纹和条数全部对得上,也不能直接判定完整。反例是:工具在导出时对分页做了动态截断。比如清单里第 10 页显示 40 条,但导出时该页只写入前 20 条,同时把后 20 条合并进第 11 页的指纹计算中。这样总条数和指纹都可能通过核对,实际却丢了半页数据。
识别这种反例的方法是检查分页边界记录。取第 10 页清单中的末条记录,确认它是否出现在导出文件中,并且是否仍属于第 10 页的位置。如果末条记录出现在第 11 页,说明分页边界被移动过。此时应关闭导出时的动态分页合并,改为按清单逐页导出,再重新核对边界记录。这个动作会改变后续的核对基准,不能再用原来的合并指纹做判断。
很多关键词采集工具在导出设置里有一个不显眼的“最大记录数”或“单次导出上限”。它可能默认等于某个整数,也可能跟随账号权限变化。这个上限不会报错,只会静默截断。要确认它是否存在,可以做一个对照导出:把同一批分页分两次导出,每次只选一半页码。如果两次结果相加仍少于清单累计,说明上限在更底层,而不是单次导出范围。
发现上限后,不要直接调大数值就结束。先记录调整前后的导出条数和分页指纹,确认新增的记录确实来自之前缺失的页码,而不是重复写入。如果新增记录集中在最后几页,且指纹与清单一致,说明截断点就在那里;如果新增记录分散在各页,则可能是去重规则在分批导出时产生了不同结果。两种情况的下一步动作不同:前者调整上限即可,后者需要固定去重键并重新全量导出。
完整性检查的终点不是“这次是否完整”,而是“下次在什么条件下可以信任自动导出”。建议在每次导出后记录三项:分页清单累计、导出文件行数、指纹匹配数。当三者相等时,标记为可信任;当行数相等但指纹不匹配时,标记为需人工抽查;当行数小于清单累计时,标记为必须修复导出参数。
如果连续两次导出都出现指纹不匹配,且去重键已经改为复合字段,那么应怀疑工具在分页抓取阶段就发生了覆盖。此时可以手动采集其中一页,与工具结果逐条比对,确认差异是来自抓取还是导出。这个手动结果会成为判断工具是否适合继续用于该数据源的直接依据,而不是依赖条数是否归零这类间接信号。