自动导出 site 命令查询结果时,最常见的问题不是导出失败,而是导出成功却只拿到第一页。判断完整性不能只看文件行数,而要建立一套可复现的核对方法:记录总数、抽样比对、验证分页边界,再用独立查询交叉确认。
当你发现导出的结果比预期少,通常有两种解释。
第一种是分页参数没有被正确传递。很多自动化脚本在翻页时依赖页码参数或游标,如果参数名写错、编码不对,或者请求之间没有保持必要的状态,第二页之后的请求可能返回与第一页相同的重复内容,或者直接返回空结果。这种情况下,导出文件看起来是完整的,但内容实际上在第一页之后就断了。
第二种是结果本身在导出过程中发生了变化。site 命令查询的结果并不是静态快照,查询期间索引可能更新,导致原本存在的页面消失,或者新页面出现。如果两次请求间隔较长,翻页时可能跳过或重复某些结果。这种遗漏不是脚本错误,而是查询对象本身在变动。
这两种原因需要不同的应对方式,所以第一步是判断你遇到的是哪一种。
以下三个信号可以帮助你判断遗漏来自哪里。
假设你导出了 500 条结果,去重后只有 320 条,且请求间隔不到 10 秒,那么更可能是分页参数问题。反过来,如果去重后数量接近文件行数,但手动查询最后一页还能看到新结果,则更可能是结果在变动。
确认原因后,按以下步骤检查完整性。
这些动作的结果会直接影响下一步:如果交叉验证发现遗漏的 URL 确实存在,说明导出不完整,需要修复分页逻辑;如果遗漏的 URL 本身就不在查询结果中,说明导出可能是完整的,只是你对结果范围的预期有偏差。
在把导出文件交给下一步处理之前,做一次快速自检可以避免后续返工。
首先,检查文件的首尾。第一条结果是否与查询结果的第一页一致,最后一条结果是否与最后一页一致。如果首尾都对得上,中间出现遗漏的概率会降低,但不能完全排除。
其次,检查分页边界的连续性。把每页最后一条和下一页第一条的 URL 按顺序排列,看是否存在跳跃。如果某一页的最后一条和下一页的第一条之间有明显断层,那一页附近就可能有问题。
最后,记录本次导出的假设条件。比如“假设结果在导出期间没有大幅变动”“假设分页参数按预期生效”。这些假设在后续发现问题时,能帮你快速定位是哪个环节出了偏差。
如果自检发现以下任一情况,建议重新导出而不是修补现有文件:去重后数量与文件行数差异超过合理范围;边界页验证发现手动查询能返回导出中没有的结果;两次不同分页方式导出的结果重合度低于预期。
重新导出时,缩短请求间隔、固定分页参数、并在导出前后各记录一次总数声明。这样即使结果仍有轻微变动,你也能判断变动是否在可接受范围内。
完整性检查的目标不是追求绝对精确,而是让你清楚知道这份导出在什么条件下可信、在什么条件下需要重新处理。把这个判断记录下来,比单纯得到一个“完整”的结论更有用。