先给结论:不要用“导出条数看起来够多”判断完整性,而要用“分页边界是否闭合”判断。把导出任务拆成可核对的三层——页码连续、边界不重叠、末页可解释——只要有一层对不上,就先补抓或重跑,不要急着拿这份数据做排名判断。
自动导出遗漏分页,通常不是工具坏了,而是你根本不知道它按哪种方式翻页。常见两类:一类是固定页码翻页,例如第1页、第2页……;另一类是游标或“下一页”链接翻页。两者检查完整性的方法不同。
动作:先翻看导出文件里有没有页码列、请求时间列或游标列。如果没有,先补一列“来源页”,再谈完整性。这个动作的结果会直接决定下一步:有页码列才能做连续性核对,没有就只能回工具侧确认分页机制。
很多人会在“按总条数核对”和“按分页边界核对”之间选一个。两种都成立,但条件不同。
适用条件:你能拿到一个可信的总数,例如查询结果页明确显示“共 N 条”,或者导出前后两次请求的总数一致。代价是:总数本身可能被截断、被四舍五入,或者因查询条件变化而漂移。假设导出文件有 480 条,页面显示 500 条,这只能说明“可能少了”,不能说明少在哪一页。所以它适合做第一道粗筛,不适合做最终结论。
适用条件:你能看到每一页的首条和末条,或者至少能看到页码与每页条数。代价是:需要多花时间逐页比对,但能定位缺口。假设第3页末条是“A”,第4页首条却是“C”,而按排序规则“A”之后本应是“B”,那缺的就不是整页,而是页与页之间的边界记录。这个发现会直接影响下一步:不是重跑全部,而是只补抓第3页到第4页之间的区间。
选择建议:如果这次导出只用于看趋势,先用总条数粗筛;如果要用于逐条核对排名位置,必须用分页边界核对。
以你手头这份 CSV 或表格为例,按下面顺序做,不要跳步。
完成第5步后,你才能决定是补抓、重跑还是接受缺口。如果异常集中在末页附近,优先怀疑总数变化或末页判断逻辑;如果异常分散在中间,优先怀疑翻页参数或去重逻辑。
导出条数变少、某页为空、末页提前结束,这些现象都不足以单独证明处理正确或错误。
动作:对每个可疑信号,至少做一次“同条件复现”。如果复现结果一致,才把它当作事实;如果不一致,先解决请求稳定性,再谈完整性。
假设你导出某关键词的排名结果,每页10条,导出文件共47条,末页7条。表面看正常。但你把页码补上后发现:第4页末条排名位置是40,第5页首条排名位置是51。中间41到50这段没有出现。这时不要直接断定“工具漏了”,先检查第5页请求时用的起始位置是不是从51开始。如果是,说明翻页步长被设成了10但起点算错;如果不是,再检查第4页和第5页之间是否有一页被跳过。这个例子的数字只用于说明比较方法,不代表任何真实导出结果。
定位到具体区间后,下一步只补抓该区间,而不是重跑全部。补抓完成后,再把补抓结果按唯一编号合并回原文件,并重新检查合并处的边界是否连续。
满足以下条件时,可以暂时认为完整:页码从1连续到末页;相邻页边界在排序字段上连续;末页条数可被总数或再次请求解释;对可疑空页做过同条件复现且结果一致。只要有一条不满足,就标记为“待补抓”,不要把它当作最终排名依据。
最后提醒一点:完整性检查的目的是知道缺口在哪、缺多少、能不能补,而不是追求一次导出绝对无缺。把每次导出的页码范围、边界异常和补抓记录留在文件里,下一次遇到类似问题时,你就能更快判断是工具行为还是数据本身的变化。