扫描被中断后,不要凭“任务完成百分比”或“已发现链接数”直接下结论。先取一份中断前后的可核对产物——通常是导出文件、任务日志或页面清单——按URL路径、状态码和抓取时间三个字段切分,再判断哪些范围已经可用、哪些必须重跑。下面以你手里的一份中断导出表为例,说明具体做法。
同样是“扫描到一半停了”,含义并不相同。若工具在采集过程中中断,未写入的URL通常不会出现在导出结果里,你看到的覆盖范围会系统性偏小;若采集已完成、只是在写文件或导出时中断,缺失的往往是尾部记录,而不是整段目录。
判断方法很直接:查看导出文件中最后若干条记录的时间戳是否集中。如果最后一批URL的抓取时间几乎相同,且此后再无新记录,更可能是写入中断;如果时间戳本身分布正常、只是数量少于预期,则更可能是采集中断。这个区分决定了你是补跑缺失部分,还是直接重跑整站。
把导出表按URL的一级或二级目录聚合,统计每个目录下的记录数,再和你已知的站点结构对照。假设某站有/news/、/product/、/help/三个主要目录,中断导出里/news/有大量记录、/product/只有零星几条、/help/完全为空,那么可初步判断扫描按某种顺序推进,尚未走到后两个目录。
这里有个不能直接照搬的边界:目录记录数多,不等于该目录已完整覆盖。列表页、分页和标签页可能让同一目录产生大量URL,而深层详情页仍未抓到。因此目录统计只能用来定位“可能未开始”的区域,不能用来证明“已经抓全”。
导出表中如果带有状态码字段,可以进一步分层:
时间戳还能帮你划定一个“可信边界”。取中断前最后一个时间戳集中的区间,把该区间内的记录视为相对完整的一批,区间之外的记录单独标记。这样你得到的不是“覆盖了百分之多少”,而是一份分段的、可复核的范围说明。
完成上述切分后,你会得到三类范围:已处理且可信、已进入队列但未完成、完全未触及。对应动作也不同。
假设你按上述方法补跑后,发现/product/目录的记录数从零星几条增加到与/news/接近,而/help/仍然为空,那么下一步应检查/help/是否被robots规则或内链结构隔离,而不是继续增加扫描轮次。这个动作的结果会直接影响你是调整抓取配置,还是修改站内链接。
如果导出文件本身没有时间戳、状态码字段,或者工具只提供一个汇总数字,那么按目录和时间切分的方法就无法执行。此时可用的替代证据是:中断前后的任务日志、服务器访问日志中对应时间段的请求记录,或站点地图与导出URL的差集。若这些都没有,只能承认当前无法可靠判断覆盖范围,需要先让下一次扫描产出可核对的明细,再谈范围问题。
另外,请求量或抓取量在中断后归零,不能单独证明扫描已正确停止或已完整覆盖——它也可能只是任务被暂停、网络中断或写入被阻塞。判断覆盖范围始终要回到明细数据本身,而不是依赖某个汇总指标的走势。