先给结论:不要用“导出条数变少”或“最后一页没有数据”直接判断分页遗漏。更可靠的做法是把一次导出拆成三组可核对的证据——分页计数、边界记录、失败重试记录——再决定是补抓、改条件还是接受截断。下面用一个假设情境说明判断顺序。
假设你用某款百度排名优化工具查询一批词,界面显示共十二页,自动导出后只有十页,第十页最后一条记录的排名位置与第十一页首条之间有明显跳跃。此时有两种合理解释:一是分页请求在第十一页失败,工具按“成功页”合并;二是导出条件在翻页过程中被重新应用,后两页因不满足条件被过滤。两者外观相似,但处理动作完全不同。
总条数会受去重、条件过滤、字段缺失影响,不能单独作为完整性依据。应优先核对三个计数:
如果请求页数等于总页数,但成功页数少两页,问题在抓取失败;如果成功页数完整而合并后页数少两页,问题在过滤规则。这一步的动作是:把三个计数抄进一张临时记录,标出差值出现在哪一层。差值位置会直接决定下一步是重试请求还是检查筛选条件。
分页遗漏通常不是均匀分布的,而是集中在页与页的衔接处。可以抽取每页首条和末条记录,按排名位置或查询词排序,观察相邻页之间是否连续。假设第十页末条排名为第 100 位,第十一页首条应为第 101 位;若导出文件中第十页之后直接跳到第 121 位,说明中间一页整体缺失,而不是个别记录丢失。
边界记录还能区分“缺失”和“重排”:如果相邻页出现重复记录而非跳跃,更可能是去重逻辑或排序不稳定,而不是分页请求失败。此时继续补抓同一条件往往得到同样结果,应先固定排序字段再导出。
自动导出工具通常会在日志或状态列中留下请求结果。需要确认的是:失败页是否被自动重试、重试后是否成功、最终文件是否包含重试结果。若失败页重试后仍为空,且该页在手动单页查询时能返回数据,说明是分页参数或会话状态问题;若手动查询同样为空,则可能是数据源本身在该区间没有结果,属于正常截断而非遗漏。
这里有一个容易误判的现象:请求量或抓取量在某一页之后归零。归零本身不能证明处理正确,它还可能来自频率限制、查询词耗尽、条件过窄或数据源返回空页。要排除这些解释,至少做一次单页手动查询作为对照。对照结果与自动导出不一致时,优先相信可复现的单页结果,并据此调整导出条件。
完成上述核对后,决策可以收敛为三条路径:
无论走哪条路径,都要把本次的三个计数、边界记录和重试结果留在同一份记录里。下一次导出出现类似现象时,可以直接对比差值出现在哪一层,而不必从零排查。完整性检查的目标不是让每次导出都变多,而是让每一页的缺失都有可核对的解释。