扫描中断后,不要先看“完成了多少百分比”,而要先确认中断发生在哪一层:是链接发现队列没走完,还是页面抓取到一半,抑或抓取完成但结果未落库。判断已覆盖范围的核心方法是把本次扫描的日志、队列状态和已落库记录做交叉比对,找出最后一个被完整处理的页面,再决定是续跑、分区重扫还是全量重跑。
第一种条件:工具保留了断点或任务状态,能看到已发现URL总数、已抓取数和待抓取队列。这种情况下,已覆盖范围约等于“已成功抓取并写入结果的URL集合”,而不是已发现集合。因为已发现只代表链接被识别,页面正文、状态码、标题、内链等字段可能还没取回。此时正确动作是导出已成功记录,按URL去重后与站点地图或已知目录清单做差集,差集部分才是需要补扫的范围。
第二种条件:工具没有断点,或中断后任务被清空,只剩一份不完整的导出文件。这种情况下不能假设“文件里有记录就等于覆盖了”。要先看导出文件是否带抓取时间戳和状态字段:如果同一目录下部分URL有完整字段、部分只有URL没有正文特征,说明中断发生在抓取中途,已覆盖范围只能按“字段完整”的记录来算。动作是先按目录或模板分组统计完整记录数,再对缺失分组做小批量试扫,用试扫结果反推该分组是否整体漏掉。
第一类证据是任务日志。日志里通常会记录开始时间、最后处理时间、错误类型和重试次数。重点看最后一条成功记录的时间点,以及它之后是否出现连接超时、内存不足或手动停止。如果最后一条成功记录集中在某个栏目,而该栏目之后的URL全部缺失,合理推断是扫描按顺序推进时在该栏目中断,而不是全站随机漏抓。
第二类证据是队列或待处理清单。如果工具能导出待抓取队列,直接对比“已抓取集合”和“待抓取集合”的并集是否接近预期URL总量。注意:队列为空不等于全站已覆盖,也可能是队列在中断时被一并清空。此时要结合站点地图、分类页和已知栏目入口重新估算总量,不能只信工具内部计数。
第三类证据是抽样复查。从已覆盖记录中随机抽少量URL,再从疑似未覆盖区域抽同样数量,分别检查标题、正文摘要、状态码和最后抓取时间。如果疑似未覆盖区域的记录字段明显偏少或时间戳缺失,说明该区域确实未完成;如果字段完整只是没出现在主列表,可能只是导出筛选问题,不必重扫。
假设某站点有产品、文章、标签三类目录,扫描中断后导出文件里产品目录有完整记录,文章目录只有前若干条带正文,标签目录完全为空。此时不能按“总记录数除以预估总数”估算覆盖率,因为三个目录的权重和抓取成本不同。
可执行动作是:先以产品目录的完整记录作为已覆盖基线;再对文章目录按发布时间倒序取一小段试扫,确认工具当前能否正常返回正文;标签目录则单独作为待补区域。试扫结果会影响下一步:如果文章目录试扫正常,就只补文章和标签;如果试扫也失败,说明中断原因可能是访问限制或工具状态异常,应先排查再决定是否全量重跑。
如果中断反复发生在同一位置,比如每次抓到某个栏目就停止,继续续跑只会重复消耗。这时应把该栏目拆成更小的URL批次,或改用站点地图分段提交。若旧系统或旧合作关系即将退出,保留部分本身价值有限,也可以只扫描仍需保留的URL清单,而不是追求全站覆盖。
例外情况是:如果本次扫描结果要用于删除决策,比如判断哪些旧内容可以下线,那么覆盖不完整会直接导致误删。此时宁可缩小范围,只对拟删除清单做定向复查,也不要拿一份不完整的全站扫描结果当依据。具体工具是否保留断点、能否导出队列、字段是否带时间戳,需要以你实际使用的版本和当前界面为准,不能凭通用描述推断。