先给结论:自动导出只拿到部分分页,通常不是“再点一次导出”能解决的。你要先判断遗漏是发生在采集端还是导出端,再决定保留现有流程、改写抓取逻辑,还是退出自动导出改为人工分段核对。检查完整性的核心不是看文件行数,而是用可复现的边界样本证明每一页都被覆盖。
自动导出一般经过三步:请求列表页、解析分页链接、把每页记录写入文件。遗漏可能出现在任何一步,而三种原因的检查方式不同。
区分方法很简单:保留一次完整运行日志,对比“解析到的分页链接数”和“实际写入的记录数”。如果链接数就不对,问题在解析层;如果链接数对但记录数少,问题在写入层。这一步决定你后面该改哪里,而不是盲目重跑。
总数对不上只能说明有问题,不能说明漏了哪一页。更可靠的做法是构造一组边界样本,覆盖首页、末页和中间某页,然后逐条核对。
假设某次导出预期覆盖 10 页,每页 20 条,但文件只有 160 条。你无法从 160 这个数字判断缺的是第 8 页还是第 9 页。但如果你事先记下第 8 页首条和第 10 页末条,导出后一查就能定位缺失区间。这个动作的结果直接决定下一步:缺失集中在末页,优先查解析层的页数上限;缺失分散,优先查写入层的去重条件。
检查出遗漏原因后,你有三条路,选择取决于遗漏是否可复现、修复成本和你对时效的要求。
适用前提:遗漏只发生在个别页,且这些页的数据不是关键字段。做法是自动导出后,对缺失页码做一次人工补录,并在下次运行前记录该页码作为已知缺口。代价是每次都要重复人工动作,适合低频、非核心的导出任务。
适用前提:遗漏稳定复现,且你能定位到解析规则或请求参数。做法是调整分页识别方式,比如改为按页码递增请求而不是依赖“下一页”链接,或者放宽去重条件。改写后必须用同一组边界样本重跑验证,确认缺失区间被覆盖。这一步的影响是:如果重跑后边界样本全部命中,说明修复有效,可以退出人工补录;如果仍缺失同一页,说明问题不在你改的那一层,需要回到日志重新定位。
适用前提:分页结构频繁变化,或工具本身不提供稳定的分页参数,修复成本高于收益。做法是按页码区间分批导出,每批单独核对边界样本。代价是效率下降,但完整性可控。适合一次性、高准确度要求的任务。
每次检查后,至少留下三项信息:本次实际覆盖的页码区间、缺失页码及对应原因层、你采取的动作。这样下次出现类似遗漏时,可以直接对照是同一原因还是新问题。
需要提醒的是,导出条数变少、抓取请求归零或某页突然为空,都不能单独证明处理正确。它们也可能是目标页面改版、请求被限流或字段规则调整导致的。只有边界样本逐条命中,才能说明这一次的完整性检查成立。涉及具体工具的当前分页参数、导出上限和字段行为,需要以你实际使用的版本核对,不要套用旧经验。
把边界样本核对固定成导出后的第一个动作,你就不必在“文件看起来不少”和“到底漏没漏”之间反复猜测,而是能直接决定是保留流程、改写逻辑还是退出自动导出。