先给结论:不要只看导出条数,也不要盲目重跑全量。更稳妥的做法是先判断遗漏发生在“分页请求”还是“分页合并”,再决定是补抓缺失页,还是回退到全量重建。分页请求失败通常表现为连续页段缺失,合并逻辑出错则常见于每隔若干页缺一段,或末页反复缺失。
自动导出一般由两步组成:按分页参数逐页请求,再把每页结果写入同一份文件。两步都可能丢数据,但检查方式不同。
可以先做一个低成本动作:把导出文件按“页码”或“抓取时间”排序,观察缺失是否成段。如果成段,优先怀疑请求层;如果分散,优先怀疑合并层。这个判断会直接决定下一步是补抓,还是重写合并逻辑。
当总页数不多,且缺失页号明确、连续时,补抓是代价较低的选择。具体动作是:先记录已成功页的页号和最后一条记录的排序键,再只请求缺失页段,最后按排序键合并回原文件。
执行时要注意两点。第一,补抓前先确认原文件的排序键是否稳定,例如按时间、ID或页码排序;如果排序键不稳定,补抓回来的数据可能插错位置。第二,补抓完成后要重新检查缺失页段的前后各一页,确认没有重复写入。若补抓后缺失页段消失,但总条数仍少于预期,说明问题可能不在请求层,而在于每页返回条数本身发生了变化,这时应转向检查分页参数是否被服务端调整。
当总页数较多,或缺失页分散、无法确认边界时,继续补抓容易陷入“补一页又发现另一页缺失”的循环。此时更可控的做法是回退到全量重建:固定分页参数,逐页请求并逐页落盘,每页单独保存,最后再合并。
全量重建的关键不是重跑本身,而是把“请求”和“合并”拆开。每页单独保存后,可以先核对页号是否连续、每页条数是否在合理范围内,再执行合并。这样即使合并出错,也能定位到具体页,而不是整份文件重来。代价是耗时更长,且对请求频率更敏感,因此需要控制请求间隔,避免因频率过高再次触发遗漏。
导出条数归零、抓取量突然下降或某页返回空,都不能单独证明处理正确或错误。它们还有几种合理解释:查询条件本身没有匹配结果、时间范围设置过窄、服务端临时限流、分页游标已到末页。因此检查完整性时,至少要用两个独立信号交叉验证,例如页号连续性和排序键唯一性。
一个可用的假设例子:假设某次导出应有 40 页,每页约 20 条,最终文件只有 36 页且缺失页号为 17 至 20。若这四页连续且位于请求频率较高的时段,优先按请求遗漏补抓;补抓后若页号补齐但总条数仍偏少,再检查每页条数是否从 20 变为 15。这个例子只说明比较方法,不代表任何具体工具的固定表现。
具体工具的分页上限、导出字段和限流规则需要以实际界面和当前文档为准,不同版本可能不同。选择补抓还是全量重建,取决于缺失是否成段、总页数多少,以及你能否稳定复现分页参数;把这三项先确认清楚,再决定下一步动作,比单纯比较导出条数更可靠。