淘宝热词查询,一次全站扫描被中断后怎样判断已覆盖范围

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

淘宝热词查询,一次全站扫描被中断后怎样判断已覆盖范围

先给结论:中断后不要凭“跑了多久”或“看到多少条”判断覆盖范围,而要用扫描起点、游标位置、分段边界和去重键四个证据交叉确认。只要其中一项缺失,就只能把已覆盖范围标成“不确定”,并设计一次小范围补扫来验证,而不是直接续跑。

假设情境:一次中断后的三种可能状态

假设你正在用某类热词查询工具对店铺做一次全站扫描,中途网络断开或页面刷新。此时工具显示已处理 1200 条、进度约 60%。这个进度数字本身不能说明问题,因为它至少对应三种状态:

这三种状态对应的补扫动作完全不同,所以第一步不是续跑,而是判断你处于哪一种。

用四个证据判断覆盖范围

1. 扫描起点是否明确

全站扫描必须有一个可复述的起点,比如“从店铺首页类目入口开始,按类目树逐层展开”。如果起点只是“打开工具点开始”,那中断后你无法保证补扫不会漏掉某个入口。起点明确时,你可以从起点重新走一遍,只补缺失分支。

2. 游标位置是否可读

很多工具用页码、偏移量或时间戳作为游标。中断后要找到最后一条成功写入记录的游标值,而不是最后一条请求的游标值。两者可能相差一整页。如果工具不暴露游标,只能靠导出文件的最后一条记录反推,这时覆盖范围要打折扣。

3. 分段边界是否完整

把全站按类目、价格带或销量区间切成若干段,每段单独记录状态。中断后你能清楚看到哪些段是“完整”、哪些是“部分”、哪些是“未开始”。这比一个总进度百分比有用得多,因为补扫可以只针对“部分”和“未开始”的段。

4. 去重键是否统一

热词在不同入口可能重复出现。如果去重键是“词本身”,那么覆盖范围按独立词计算;如果去重键是“词+来源入口”,覆盖范围按记录数计算。两种口径下的“已覆盖”含义不同,混用会导致补扫重复或遗漏。中断后应先确认去重键,再统计已覆盖数量。

一个可执行的判断动作

假设你导出中断前的数据,得到 1200 条记录,去重后是 860 个独立词。此时不要直接说“覆盖了 860 个词”。先做一步:随机抽取 20 个已覆盖的词,回到工具里单独查询,看它们是否仍能被检索到,以及来源入口是否与记录一致。

如果 20 个里有多数能对上,说明已落库数据基本可信,补扫可以只针对未完成分段。如果对不上,说明部分记录是中间态,需要把对应分段整体重扫。这个动作的结果直接决定下一步是“补扫”还是“重扫”,而不是凭感觉续跑。

补扫时如何设定停止条件

补扫不是把全站再跑一遍,而是设定明确的停止条件:

  1. 所有标记为“部分”的分段,其游标从断点推进到该段末尾。
  2. 所有标记为“未开始”的分段,完整跑完并记录去重后数量。
  3. 补扫新增的独立词与已覆盖词做一次交集比对,确认没有整段遗漏。

当这三个条件都满足时,才能把覆盖范围标成“完整”。如果补扫后仍有分段状态不明,就保留“不确定”标记,并在后续查询中优先复查这些分段,而不是假装全站已覆盖。

哪些现象不能单独证明覆盖正确

补扫后请求量归零、抓取量下降或进度条走满,都不能单独证明覆盖正确。请求量归零可能只是因为工具对重复请求做了拦截;进度条走满可能只是前端动画结束;抓取量下降可能只是分段本身词量就少。这些现象需要和游标位置、分段边界、去重结果一起看,才能作为判断依据。

归根结底,中断后的覆盖范围判断是一个证据链问题:起点、游标、分段、去重键缺一不可。缺哪一项,就在那一项上做小范围验证,再决定补扫还是重扫。这样即使工具本身不提供断点续传,你也能把覆盖范围控制在可解释的范围内。

图1 图2

nginx