先给结论:自动导出遗漏分页后,不能只看“总数是否对得上”,而要把任务拆成三个可核对对象——导出文件的分页清单、源列表的分页边界、以及两者之间的差集。三者对齐,才说明完整性检查成立;只对总数,容易把“少一页但每页多几条”误判为通过。
分页遗漏通常有三种来源,处理方式完全不同。第一种是工具在翻页时提前停止,比如第 8 页返回空结果就结束,但第 9 页其实有数据。第二种是分页参数被改写,比如每页条数从 50 变成 100,导致页码边界错位。第三种是导出过程中断后重试,重试从第 1 页开始,覆盖了部分旧数据。
区分方法很直接:保留工具的请求日志或导出日志,看最后一页的页码和该页条数。如果最后一页条数等于设定的每页条数,说明可能还有下一页;如果小于每页条数,才可能是真正的末页。这一步的结果决定下一步是补抓还是重导,而不是直接下结论。
保留现有导出结果,前提是遗漏只发生在末尾且总量可控。此时补抓最后一页之后的若干页,合并进原文件即可。适合分页稳定、每页条数固定的场景。
改写导出策略,前提是遗漏反复出现,且每次都集中在分页边界。可以把“按页码翻页”改为“按时间区间或 ID 区间切片”,每个切片单独导出,最后合并。这样即使某个切片失败,也能单独重跑,不影响其他切片。
退出自动导出,改人工核对,前提是数据量小、但完整性要求极高,且工具的分页行为不透明。此时人工逐页核对虽然慢,但能留下可复查的记录。代价是时间成本,收益是可解释性。
三种取舍不是并列推荐,而是按“遗漏是否可复现”和“数据量是否可控”两个条件分流。可复现且量大,优先改写策略;不可复现且量小,优先人工核对。
总数对得上不代表完整。假设源列表有 1200 条,导出文件也有 1200 条,但其中第 5 页的 50 条被第 6 页的前 50 条替换了,总数不变,内容却错了。所以完整性检查要落到“差集”上。
具体动作:从源列表按分页边界取每页的首条和末条标识,形成一个边界清单;再从导出文件中取每页的首条和末条标识,形成另一个边界清单。两个清单逐页比对。如果某一页的首条标识对不上,说明该页边界发生了偏移,需要回查该页前后的请求记录。
这个动作的结果会直接影响下一步:边界清单全部对齐,可以进入抽样内容核对;只要有一页边界不对齐,就先修分页逻辑,不要继续合并文件。
假设某次导出设定每页 100 条,工具在第 10 页返回 37 条后停止。表面看,第 10 页不足 100 条,像是末页。但回查请求日志发现,第 9 页返回了 100 条,第 10 页返回 37 条,第 11 页请求被工具跳过。此时不能认定完整,因为“不足一页”只是工具停止的条件,不是源列表结束的证据。
处理动作:手动请求第 11 页。如果第 11 页返回 0 条,说明第 10 页确实是末页,遗漏不存在;如果第 11 页返回了数据,说明工具提前停止,需要补抓第 11 页及其后续页。这个判断只依赖请求结果,不依赖任何工具承诺。
多个角色对“是否完整”有不同理解时,不要争论结论,而是把分歧拆成可核对的项目:最后一页的页码、每页条数、边界标识、请求时间。每个项目只回答“有”或“没有”、“一致”或“不一致”。
这些项目核对完,分歧通常会收敛到一个具体页或一个具体参数上,而不是停留在“感觉少了”的层面。此时再决定保留、改写还是退出,依据就充分了。
需要提醒的是,不同网盘外链工具的分页实现、日志字段和导出格式并不相同,上述检查方法需要结合你实际使用的工具调整字段名称和核对方式。具体功能与日志位置请以你当前使用的工具为准。