当同一批页面提交后只有一部分出现在结果里,最危险的做法是把“被发现”当成“处理正确”的证据,然后直接改模板。更稳的做法是先划分对照组:按一个可核对、且与页面能否被抓取无关的变量把页面分成两组,再比较两组的表现差异。这样做的目的不是立刻找到原因,而是先排除“随机波动”和“抓取预算分配”这两种常见解释。
批量页面通常来自同一套模板、同一批数据,理论上应该被同等对待。但实际观察中,往往是一部分进入结果,另一部分长期缺席。如果此时只盯着“缺席的那部分”找差异,很容易把模板里某个偶然字段当成原因。
更合理的起点是:把“被发现”和“被处理”分开看。一个页面可能被抓取过,但没有进入结果;也可能从未被抓取。这两种情况的下一步动作完全不同。所以对照组要围绕“可抓取性”之外的因素来划分,否则你只是在重复验证抓取日志。
站点地图提交、内部链接推送、robots.txt 允许抓取,都只影响“可被抓取”,不等于“会被优先抓取”。如果批量页面共用同一入口,抓取工具可能按链接深度、更新频率或历史响应速度决定先抓谁。此时缺席的页面未必有问题,只是排在后面。
这种解释的典型证据是:缺席页面的抓取记录存在,但时间明显晚于同批其他页面;或者抓取频率随页面在站内位置变化而分层。
同一批页面里,如果一部分返回了不同的 HTTP 状态、不同的规范链接指向,或者正文主体在首次响应中不可见,那么“被发现比例低”就可能与这些差异相关。注意:robots.txt 的抓取限制不等于可靠的索引移除,站点地图也不保证收录,HTTPS 同样不保证安全无漏洞或排名。这些事实意味着,你不能用“我已经提交了”来反推“页面没问题”。
这种解释的典型证据是:缺席页面在状态码、规范链接指向或首屏可见内容上,与已出现页面存在可重复的差异,且这种差异不是抓取时间造成的。
对照组要能区分上面两种解释。建议选一个“与抓取优先级无关、但与页面处理有关”的变量,例如:
把同批页面按这个变量分成两组,然后分别记录两组在相同时间窗口内的抓取记录和结果出现情况。不要按“已出现/未出现”来分组,那等于用结果解释结果。
假设有 200 个页面,其中 80 个在首次响应里正文直接可见,120 个需要脚本执行后才出现正文。你按“正文是否直接可见”分成两组,观察两周。如果两组在抓取次数上接近,但直接可见组的出现比例明显更高,那么“脚本渲染”比“抓取预算”更值得优先排查。如果两组抓取次数本身差异很大,那么优先解释仍是抓取分配,而不是内容处理。这个例子的数字只用于说明比较方法,不代表任何真实站点数据。
如果证据指向抓取分配:检查内部链接是否让缺席页面离入口过远,或是否长期没有更新信号。动作可以是把部分缺席页面加入更靠近首页的链接路径,然后观察抓取记录是否前移。如果抓取记录前移但结果仍不出现,说明问题不在抓取,应回到内容处理组继续比较。
如果证据指向内容或状态差异:先修正可核对的技术项,例如统一规范链接指向、确认状态码一致、让正文在首次响应中可见。动作完成后,不要立刻全量改模板,而是保留原对照组,只改其中一组,再比较两组变化。这样即使结果没有立刻改善,你也能知道是改动无效,还是抓取延迟仍在起作用。
最后要提醒一句:请求量、抓取量或某项统计归零,不能单独证明处理正确。它也可能是统计口径变化、抓取工具调整或短期波动。把对照组和抓取记录一起留档,才能在下一次批量页面出现类似情况时,快速判断该先查抓取还是先查页面本身。