奇奇SEO工具:一次全站扫描被中断后怎样判断已覆盖范围

📍 WDQWDWQD987AAAAA:216.73.217.16
📱 Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
🔗 /2d124203a8ba.html
📄

奇奇SEO工具:一次全站扫描被中断后怎样判断已覆盖范围

先看中断发生在哪个阶段,再决定是补扫还是整站重跑。如果中断前扫描已经进入“抓取完成、正在汇总”的阶段,已抓到的页面清单通常仍然可用,你只需要确认哪些URL被写入了结果;如果中断发生在抓取过程中,已覆盖范围只能按“中断前最后一条成功记录”来估算,不能假设它均匀分布在全站。判断依据不是扫描进度条,而是可核对的三类痕迹:任务日志里的最后处理对象、结果文件中已出现的URL、以及扫描开始前设定的范围规则。

条件一:中断时结果文件仍可读取,优先做差集而不是重扫

可读取的结果文件是判断覆盖范围最直接的证据。把结果里已出现的URL导出成一份清单,再用你扫描前准备的站点URL来源做差集,剩下的就是未覆盖部分。站点URL来源可以是XML站点地图、导航链接导出或历史爬取记录,前提是它和本次扫描的入口规则一致。

实施动作分三步。第一步,从结果文件提取URL字段,去重后得到已覆盖集合。第二步,从站点URL来源提取同一层级的URL,得到目标集合。第三步,做差集,并按目录或模板分组统计缺口。这样做的结果是,你能看出中断是卡在某个栏目、某个分页区间,还是随机分布;如果缺口集中在少数目录,补扫这些目录比整站重跑更省时间,下一步就只需针对缺口重新发起一次限定范围的扫描。

这里有一个例外:如果结果文件是流式写入且中断时缓冲区未落盘,最后一段记录可能缺失。此时差集会出现一批“其实已抓过但没写进去”的URL,补扫会产生重复。判断方法是看结果文件最后一条记录的时间戳与任务日志中断时间是否接近;差距明显,说明有丢失,应把补扫范围向前多留一段重叠区间,再用URL去重消化重复。

条件二:结果文件不可用或已损坏,只能按日志和范围规则重建边界

结果文件打不开时,不要凭进度百分比推断覆盖范围,那个数字可能包含重试和跳转,不等于独立URL数。可用的替代证据是任务日志中的最后处理对象,以及扫描前设定的范围规则。范围规则包括入口URL、允许的目录前缀、排除规则和最大深度,这些决定了“理论上应该覆盖什么”。

重建边界的动作是:先按范围规则列出理论目标集合,再标记日志中最后成功处理的URL,把该URL在目标集合中的位置作为分界点。分界点之前的视为大概率已覆盖,之后的视为未覆盖。这个方法的假设是扫描按目标集合的顺序推进,如果工具采用并发抓取,顺序假设不成立,分界点只能作为粗略参考,实际缺口可能分散在分界点两侧。

假设一个例子:某次扫描设定入口为首页、深度为三层、排除带查询参数的URL。日志最后记录的是一条二级目录页面,那么三层页面基本可以判定未覆盖,二层中排在它之后的页面也存疑。此时合理的选择是重扫二层之后的部分加全部三层,而不是整站重跑。重扫完成后,把新结果与旧结果按URL合并去重,再检查总URL数是否接近理论目标集合,接近才说明覆盖完整。

用可区分的原因决定补扫还是重跑

两种条件对应两种选择,判断依据可以归到下面这组信号上:

这些信号里,缺口分布比中断位置更有决策价值。中断位置告诉你“停在哪”,缺口分布告诉你“漏了什么”,后者才决定下一步动作的范围。

容易被误读的几种现象

扫描中断后请求量骤降、日志停止增长,这些现象只能说明进程不再活动,不能证明已抓取的内容就是完整的。同样,结果文件里URL数量少于预期,也有多种合理解释:可能是范围规则排除了部分URL,可能是重复URL被合并,可能是重定向目标被折叠,也可能确实是中断导致漏抓。把数量差直接当成漏抓量,会高估缺口并触发不必要的整站重跑。

还有一种情况是工具在中断后自动生成了部分结果,这类结果是否可用取决于它是否包含URL字段和状态字段。只有状态字段而没有URL字段的结果,无法用于差集判断,只能当作参考。具体到你所用的工具版本,这些行为需要以实际输出为准,无法从名称或界面推断。

补扫之后还要做一次覆盖核对

补扫或局部重扫完成后,把新旧结果按URL合并去重,再与理论目标集合做一次差集。如果剩余缺口为空或只剩少量已知的排除项,说明覆盖已经闭合;如果仍有成片缺口,说明范围规则或入口设置有遗漏,应回到规则层面修正,而不是继续补扫。这个核对动作的结果直接决定流程是结束还是进入下一轮修正,也是判断本次中断处理是否真正完成的最后一步。

图1 图2

nginx