扫描中断后,不要先看“已扫多少条”这个总数,而要判断中断点之前的结果是否覆盖了你真正关心的页面集合。可行做法是:拿一份你手头已有的页面清单(例如站点地图、栏目导出表或上次扫描结果),与本次已产出的页面记录做集合比对,再决定是补扫、重扫还是直接使用。下面按这个顺序展开。
全站扫描的“覆盖”至少有两层含义:一是页面是否被访问过,二是页面上的关键词数据是否被完整解析。中断时这两层往往不一致。某个页面可能已经被抓取,但解析到一半就停了,记录里只有标题没有正文词频;也可能页面被跳过,因为工具认为它与已抓页面重复。
所以你手里的资料如果只有一份“已处理 URL 列表”,它只能回答第一层。要判断第二层,需要看每条记录是否带有完整的字段结构。假设某条记录同时包含 URL、页面标题、正文长度和词项统计四类字段,那么它大概率完成了完整解析;如果只有 URL 和时间戳,就只能算“访问过”,不能算“已覆盖”。这个判断不依赖具体软件,任何扫描工具的输出都可以按这个结构检查。
进度条显示的百分比通常以工具自己发现的 URL 总数为分母,而工具发现 URL 的过程本身可能被中断截断。也就是说,分母可能偏小,百分比反而虚高。更可靠的办法是拿一份独立于本次扫描的页面清单当基准。
具体动作:把基准清单的 URL 去重、规范化(去掉参数、统一末尾斜杠),再与本次已产出记录的 URL 做差集。差集里的页面就是“未覆盖”,交集里的页面还要再过一遍字段完整性检查。做完这一步,你会得到三个集合:完整覆盖、部分覆盖、完全未覆盖。接下来的决策只取决于“部分覆盖”和“完全未覆盖”里有多少是你关心的重点页面。
这里有个容易照搬的误区:如果基准清单来自站点地图,而站点地图本身更新滞后,差集会把已下线页面也算成未覆盖。所以基准清单最好再和服务器访问日志或站内链接抽样交叉一次,确认它反映的是当前真实页面集合。
扫描中断分两种典型情况,处理方式不能混用。
选择哪一种,取决于你对数据一致性的要求。如果这批数据只用来做一次粗筛,部分覆盖的记录也够用;如果要拿来做页面间的横向对比,比如比较不同栏目的关键词分布,那部分覆盖的记录会引入偏差,应当重扫。
假设你手头有 500 条页面清单,本次扫描产出 320 条记录。差集算出 180 条未覆盖。进一步检查 320 条记录,发现其中 60 条缺少正文词项字段,属于部分覆盖。那么完整覆盖是 260 条,占清单的 52%。
这时不要直接补扫全部 240 条。先看这 240 条里有多少属于重点栏目。如果重点栏目只占 40 条,且这 40 条恰好都在未覆盖集合里,那就优先补扫这 40 条,其余页面按需处理。补扫完成后,重新做一次差集,确认重点栏目全部进入完整覆盖集合,再决定是否扩展到全站。这个顺序把“判断覆盖范围”变成了可执行的分批动作,避免一次性重扫全部页面。
需要说明的是,上述数字只用于演示比较方法,不代表任何真实扫描的典型比例。实际比例会因站点规模、抓取速度和中断时机而差异很大。
下次扫描被中断时,按以下顺序处理,可以少走弯路:
这套流程不依赖某个特定软件的界面或功能,具体工具是否支持断点续扫、导出字段有哪些,需要以你实际使用的版本为准去核对。判断覆盖范围的核心始终是:用独立基准做差集,用字段完整性区分“访问过”和“解析完”,再按重点页面决定补扫范围。