先给结论:不要按“已发现/未发现”直接分组,而要先按页面是否共享同一套可抓取条件分组。具体做法是,把同一批页面按“模板、链接入口、响应状态、内容可见方式”四个维度做交叉标记,再在每个维度内部做对照。这样做的原因是,只有一部分页面被发现,通常不是“整批页面质量差”,而是某个条件只在部分页面上成立。这个动作的结果会直接决定下一步是修模板、补入口,还是改内容呈现,而不是继续盲目提交。
假设你有一批结构相似的页面,比如同一模板生成的产品页或文档页,数量在几百到几千之间。你观察到:一部分页面被发现了,另一部分没有。此时最容易犯的错误,是把“被发现”当成页面质量好的证明,把“未被发现”当成页面质量差的证明。这个推断不成立,因为发现与否可能和页面质量无关,只和入口、状态或渲染方式有关。
更合理的起点是:这批页面是否真的共享同一套抓取条件。如果它们只是“看起来相似”,但模板版本、内链位置、参数、返回状态不同,那它们就不属于同一个对照组。
只有一部分页面被发现,通常可以归入两个解释。
解释一:入口差异。未被发现的页面可能缺少稳定入口,比如只存在于分页深处、筛选结果里、需要交互才能展开的列表,或者只被写进站点地图但站内没有链接指向。站点地图不保证收录,所以“提交了”不等于“会被发现”。这种情况下,页面本身可能没有问题,问题在于发现路径。
解释二:页面自身差异。未被发现的页面可能在响应状态、内容可见方式或模板输出上不同。例如同一批页面里,一部分返回正常内容,另一部分返回空壳、错误状态或被脚本延迟渲染;又或者一部分页面在初始 HTML 中就有正文,另一部分必须执行脚本后才出现。此时入口相同,但页面给抓取端的结果不同。
这两个解释会导向完全不同的动作:前者修入口,后者修页面输出。所以必须先区分它们,不能直接开始批量提交或批量改内容。
要区分入口差异和页面自身差异,可以按下面四个维度给每个页面打标记,然后做交叉对照。每个维度内部,都要同时包含“已发现”和“未发现”的页面,否则这个维度无法提供对照信息。
交叉对照的关键是:不要只看“未发现页面有什么共同点”,还要看“已发现页面里有没有同样具备这个特点的页面”。如果已发现页面里也有大量缺少入口的页面,那入口差异就不足以解释全部现象;如果已发现页面里也有依赖脚本的页面,那渲染差异也不是唯一原因。
假设有 400 个页面,其中 120 个被发现,280 个未被发现。你按四个维度打标后得到:
这个结果说明:入口差异覆盖了大多数未发现页面,但并不能解释全部,因为已发现页面里也有缺少固定入口的样本。脚本输出差异只覆盖一小部分,状态异常只覆盖 10 个。下一步应该优先处理入口问题,同时把脚本输出组和状态异常组单独拆出来,分别验证。这个动作的结果是:入口修复后,如果未发现数量明显下降,说明入口是主因;如果下降不明显,说明还有别的条件在起作用,需要回到模板和渲染维度继续排查。
这里要强调:请求量、抓取量或某个统计归零,不能单独证明处理正确。抓取量下降可能是因为抓取预算被其他部分占用,也可能是因为入口调整后抓取路径变了,还可能只是时间窗选得不对。必须结合对照组的相对变化来判断。
第一,先固定时间窗和数据源。已发现和未发现要在同一时间窗、同一数据来源下比较。不同时间窗的抓取结果混在一起,会把正常波动误判成处理效果。
第二,每个维度都要有“已发现”样本。如果某个维度只有未发现页面,没有已发现页面作对照,就无法判断这个维度是原因还是伴随现象。
第三,先处理能同时影响多个页面的条件。如果入口差异覆盖了大多数未发现页面,优先修入口,而不是先逐个改内容。修完入口后,再观察剩余未发现页面是否集中在脚本输出或状态异常组,决定是否进入下一轮处理。
最后提醒一点:robots.txt 的抓取限制不等于可靠的索引移除,站点地图也不保证收录。划分对照组的目的是找到可验证的条件差异,而不是用某个单一信号给整批页面下结论。