扫描中断后不要直接重跑,也不要默认“扫到哪算哪”。更可靠的做法是:先找到这次任务实际留下的输出文件或记录,按URL清单与页面总数比对,算出覆盖率缺口,再决定是补扫缺口还是整站重跑。判断依据不是工具界面上的进度条,而是你能拿到的、可核对的页面级数据。
同样是“中断”,含义差别很大。抓取中断意味着部分URL根本没被请求;解析中断意味着页面已抓取但指标未生成;写入中断意味着数据已产生但落盘不完整。三者对应的补扫策略完全不同。
可以这样区分:打开输出文件,看最后若干条记录是完整行还是被截断的半行。如果文件末尾是完整记录、只是条数明显少于预期,多半是抓取阶段提前停止;如果文件末尾出现不闭合的字段或乱码,通常是写入被强制打断,此时最后一批数据不可信,需要按批次边界回退。
一个实际动作:把中断任务的输出按时间或批次字段排序,找到最后一条可完整解析的记录,把它之前的部分标记为“可用”,之后的部分标记为“待验证”。这一步直接决定你接下来补扫的起点,而不是从头再来。
没有进度条日志时,可以交叉使用以下证据。它们各自都不充分,但组合起来能给出可用的判断区间。
把三者放在一起:如果站点清单有1万条、去重后输出6千条、且输出呈现按目录推进的顺序,那么缺口更可能集中在尚未进入的目录,而不是随机散落。这个推断是假设队列顺序稳定,如果工具采用并发抓取,顺序线索的可靠性会下降,此时应以清单比对为主。
判断的关键不是缺口大小,而是缺口是否成片、是否可枚举。
如果缺口是连续的、可枚举的URL区间,补扫更省时间,也更容易与已有数据合并。合并时要注意两批数据的抓取时间不同,页面在此期间可能已改动,指标口径需要标注采集时间,不能直接混算平均值。
如果缺口是零散分布的、或者你无法确定哪些URL已被处理,重跑整站更稳妥。零散缺口的常见成因是并发失败、超时重试耗尽或部分URL被规则跳过,这类情况靠补扫很难穷尽。
一个假设例子:假设一次扫描计划覆盖5000个页面,中断后落盘4200条,其中最后200条字段残缺。可用的约4000条,缺口约1000条。若输出显示缺口集中在/product/目录下,且该目录URL可从站点地图完整导出,补扫这1000条即可;若缺口散布在多个目录且无规律,则重跑。两种做法都成立,区别在于缺口能否被完整枚举。
完成上述判断后,你应该能写出三样东西:可用数据的边界(哪些记录可信)、缺口清单(还差哪些URL)、以及本次采集的时间戳。这三样决定了后续分析能不能用这批数据。
如果缺口比例很小且集中在低价值页面,可以先基于可用数据推进分析,同时把缺口记录在案;如果缺口覆盖了核心栏目或关键页面类型,则应先补齐再分析,否则任何按栏目、按模板汇总的结论都会失真。中断本身不说明数据不能用,说明的是你需要先界定它覆盖了什么。
最后提醒一点:请求量、抓取量或输出条数归零,并不能单独证明任务已正确处理完毕。它也可能来自限流、网络中断、规则误过滤或磁盘写入失败。遇到这类现象,先核对输出文件的完整性和站点清单的差异,再下结论。