中断后不要凭感觉决定“继续用”还是“重跑”。先拿到一份可核对的覆盖清单,再按缺口性质分流:缺口集中在未处理队列,就保留已完成部分、只补剩余;缺口涉及已处理结果但无法确认写入完整,就重跑受影响范围;如果工具本身没有可导出的进度记录,退出这次结果、改用能留下阶段标记的方式,才是更稳的取舍。
“已覆盖范围”不是单一数字,至少分三层:请求层、结果层、写入层。请求层指任务是否把目标页面或查询批次发出去;结果层指返回内容是否被解析成候选词;写入层指候选词是否落进结果表或导出文件。中断可能只打断其中一层,后面几层未必同步。
可区分的证据是:如果导出文件里最后若干条记录的时间戳连续,且任务日志显示请求批次停在某个编号,通常说明请求层和写入层基本对齐,缺口在后续批次。如果日志显示请求已发出但结果表里找不到对应记录,缺口更可能落在写入层,此时保留旧结果的风险高于重跑。如果工具只给一个“完成百分比”而不给批次记录,这个百分比不能单独当作覆盖依据。
请求量、抓取量或进度条归零,都不能单独证明处理正确。它们还可能来自会话过期、并发被限、目标站点返回异常、本地磁盘写满或进程被系统回收。要排除这些解释,至少需要同时看到批次编号、时间戳和结果行数三项中的两项能相互印证。
保留并补跑,适合以下条件同时成立:
满足这些条件时,实际动作是:先冻结当前导出文件,不再往同一文件追加;再根据最后一条完整批次的边界,生成一份只含剩余范围的补跑清单;补跑完成后,用“输入范围去重后数量”与“结果表去重后数量”做一次对账。对账结果会直接影响下一步——如果两者差距在预期波动内,可以进入筛选;如果差距明显偏大,说明中断期间可能混入了重复或缺失记录,应回到重跑判断,而不是继续往下游走。
假设某次扫描按页面分批,日志显示第 1 至第 40 批已写入,第 41 批请求发出但无写入记录。此时保留第 1 至第 40 批、补跑第 41 批及之后,是合理选择;但如果第 41 批的请求已经改变了目标站点的会话状态,补跑前需要先确认会话是否仍有效,否则补跑结果会与前半段不可比。
有些中断并没有丢数据,只是让结果处于“半结构化”状态:候选词已抓到,但分组、去重或来源标记不完整。这种情况下,全量重跑成本高,改写更合适。前提是原始返回内容仍可访问,且你能按来源字段重新归并。
可执行的动作是:保留原始结果表,另建一张整理表;按来源页面、查询批次、抓取时间三个字段重新分组;对同一候选词保留最早出现记录并标注后续出现次数。整理完成后,抽取若干条与原始记录逐条比对。如果比对一致,后续筛选可以基于整理表进行;如果出现无法回溯来源的记录,说明改写过程引入了不可验证内容,应把这一部分退回重跑,而不是继续使用。
改写适合结果量大、原始内容可回查、且业务上更看重候选词集合而非逐条来源精确性的场景。若业务要求每个候选词都能追溯到具体页面和批次,改写带来的便利不足以抵消核验成本,重跑更合适。
退出不是失败,而是一种取舍。出现以下任一情况时,继续修补的收益通常低于重新组织一次扫描:
退出后的动作不是简单重来,而是把扫描拆成可独立验收的小段:每段有明确输入、明确输出和独立的结果文件。这样即使再次中断,也能直接判断哪一段已完成。代价是管理成本上升,适合对覆盖完整性要求高、且中断已经发生过一次以上的情况。
无论保留、改写还是退出,最后都要落到同一个动作:用输入清单与结果清单做一次范围对账,并记录对账时的假设。对账至少包含三项:输入范围是否完整、结果是否可按批次回溯、未覆盖部分是否已明确列出。三项都能回答,这次中断的影响就是有界的;有一项无法回答,就不应把当前结果直接用于后续决策。
具体信息如工具是否支持批次导出、进度记录保留多久、中断后能否续跑,需要以你所使用工具的当前说明为准,不同版本和部署方式可能不同。判断覆盖范围的方法本身不依赖某个品牌,但前提是你手头至少有一种能留下阶段痕迹的记录方式。