爱站词数,一次全站扫描被中断后怎样判断已覆盖范围

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

爱站词数,一次全站扫描被中断后怎样判断已覆盖范围

被中断后,不要用“已扫到的词数”直接当作全站规模。更稳妥的做法是:先判断中断发生在哪一层(抓取层还是统计层),再用可复核的样本估算已覆盖比例。多数情况下,中断只会让结果偏小,不会凭空多出词;如果出现词数反而比上次完整扫描更多,那通常是口径或过滤条件变了,而不是扫描更全。

先看一个反直觉现象:中断后词数可能不降反升

假设某次扫描跑到一半被中断,你重新看结果,发现词数比上一次完整扫描还多。直觉会认为“扫得更多了”,但中断本身不会增加覆盖。能解释这个现象的原因主要有两个:

这两个解释会导向完全不同的下一步:前者要统一口径再比,后者要固定时间窗口再比。判断错方向,后面的估算都会偏。

区分两种解释的证据:先核对口径,再核对页面集合

能区分“口径变了”和“数据源变了”的证据,是同一批页面的词数对比。做法是:从两次扫描都覆盖到的页面里抽一小批(例如同一目录下的若干页),分别统计它们的词数。

这个动作的结果直接决定下一步:口径问题就先统一规则重扫,覆盖问题才需要继续估算已覆盖比例。若跳过这一步,很容易把口径差异误当成覆盖差异。

判断已覆盖范围:用分层抽样而不是直接看词数

确认是覆盖问题后,不要用“已扫词数 ÷ 预估总词数”这种拍脑袋比例。更可靠的是按站点结构分层抽样:把站点分成首页、栏目页、详情页等几层,每层随机抽若干页,检查这些页面在中断结果里是否已被统计到。

假设站点有 1000 个详情页,你随机抽 50 个,发现其中 30 个的词已被统计,那么这一层的覆盖比例约为 60%。这只是估算,前提是抽样随机且各层页面结构相近。如果详情页里既有短页又有长页,就要按长度或模板再分一层,否则估算会偏。

需要说明的是,抽样得到的比例只是近似值,不能当作精确覆盖率,也不能单独证明扫描处理正确。

中断位置比词数更能说明覆盖到哪

扫描通常按某种顺序推进,比如按栏目、按 URL 列表或按抓取队列。找到中断点,比看总数更有用。可以检查:

  1. 结果里最后被统计的页面属于哪个栏目或哪段 URL 范围;
  2. 中断点之后的页面是否完全缺失,还是部分存在;
  3. 是否存在“跳着扫”的情况,即中间某些页面缺失但后面又有数据。

如果是顺序推进,中断点之后基本可视为未覆盖;如果是跳着扫,就不能用中断点划线,只能靠抽样估算。这一步的结果决定你是“从断点续扫”还是“整站重扫”。

什么时候可以直接续扫,什么时候必须重扫

续扫成立的条件是:统计口径没变、抓取顺序稳定、且能确认断点位置。满足这些,从断点继续通常比整站重扫更省时间。反之,如果口径已经变过、或无法确认哪些页面被跳过,续扫会得到一份混合口径的结果,后续很难解释,这时重扫更稳妥。

一个可操作的判断:先按上面的抽样方法估算已覆盖比例。如果覆盖比例较高且断点清晰,优先续扫;如果覆盖比例低或断点模糊,直接重扫,避免在不可比的数据上继续叠加。无论选哪种,都要记录本次的口径和抽样结果,否则下次中断时又会回到同样的问题。

图1 图2

nginx