先看扫描留下的日志和缓存,而不是重跑。判断已覆盖范围的核心依据是:中断前是否按固定顺序推进、每个已处理对象是否写入了可核对的完成标记。如果日志只记录“开始扫描”而没有逐项完成记录,那么已覆盖范围无法从日志推断,只能按缓存或临时文件反推,并接受一定误差。对百度指数查询工具这类需要逐词拉取数据的场景,中断后最稳妥的动作是:先冻结当前状态,再抽样验证已处理部分,最后只补未确认的部分。
多数扫描任务会按队列、字母序或ID顺序处理对象。中断后先打开日志,确认三件事:起始对象、处理方向、最后一条成功记录。这三项决定了覆盖范围的边界形状——是一个连续前缀,还是散点。
这里有个常见误判:看到日志里出现了靠后的对象,就认为中间都已处理。并发或重试机制会让个别对象提前完成,形成“空洞”。所以判断标准不是“最远到哪”,而是“哪些明确完成”。
比日志更可靠的是每个对象写入的完成标记。以百度指数查询工具为例,假设你的流程是“取词→查询→写入结果文件”,那么结果文件里已有的词就是已覆盖部分。操作如下:
如果结果文件是追加写入且每条带时间戳,差集就是补扫清单。如果结果文件是整体覆盖写入,中断可能导致文件损坏或只保留部分,此时要先用备份或临时文件恢复,再统计。
一个假设例子:待查列表有500个词,结果文件中有312条带时间戳的记录,最后一条时间戳为14:07。日志显示14:08出现连接中断。此时可初步判断已覆盖约312个词,但需注意:如果存在重试,个别词可能被写入两次,去重后实际覆盖数可能低于312。补扫时应对这312个词之外的全部对象重跑,而不是从第313个开始。
完成标记只能证明流程走完,不能证明数据有效。中断可能发生在“查询返回但写入不完整”的瞬间。因此需要抽样:从已覆盖部分随机取若干个对象,检查其数据字段是否完整、时间范围是否符合预期、是否存在空值或截断。
这个动作的结果直接影响下一步:抽样通过则补扫,抽样不通过则重跑。不要在未验证的情况下直接补扫,否则可能把损坏数据和新数据混在一起,后续更难判断。
如果第一次中断是因为单次请求量过大、网络不稳定或工具限制,直接重跑同样的流程大概率再次中断。补扫前应做两个调整:
这样即使再次中断,你也能从批次编号直接知道覆盖到哪一批,而不必重新做差集分析。对百度指数查询工具的使用者来说,批次大小需要根据实际响应速度和稳定性调整,没有统一数值;可以先跑一个小批次观察耗时和成功率,再决定后续批次规模。
有些中断场景下,追求精确覆盖范围没有意义,应直接转为重跑。判断条件如下:
遇到以上任一情况,继续推断覆盖范围只会增加错误风险。更合理的动作是:保留现有文件作为参考,重新建立一份干净的待查列表和结果文件,从头执行,并在执行前先确认日志和写入机制能支持中断恢复。这一步的结果是:你牺牲了一次重跑的时间,换来了下一次中断时可判断、可续跑的基础。