先给一个假设情境:某站点一次上线了800个结构相同的商品页,其中约120个在日志里持续出现抓取记录,其余页面几乎没有。此时不能把“被抓取的120个”直接当成处理组、把“没被抓取的680个”当成对照组,因为两组在链接深度、发布时间、内容差异上可能同时不同。更稳妥的做法是:先找出这批页面里唯一可控的差异变量,再按这个变量划分对照,而不是按“是否已被抓取”划分。下面把决策过程拆开。
按结果分组会产生循环论证:你想验证的是“什么导致被抓取”,却用“是否被抓取”来分组,那么任何组间差异都既可能是原因,也可能是结果。更实际的问题是,被抓取的页面往往本来就在导航里、被内链指向、发布时间更早,这些因素会同时影响抓取频率。
可用的替代分组依据,是那些在抓取发生之前就已确定、且你能主动改变的变量。常见的有:
选哪一个作为分组轴,取决于这批页面在结构上真正不同的地方。如果800个页面模板一致、只是入口不同,那入口层级就是最干净的分组轴。
继续上面的假设。假设排查后发现:被抓取的120个页面全部有正文内链,其余680个只出现在站点地图和列表页。这时可以把“是否有正文内链”作为分组轴,而不是抓取结果。
具体动作:从680个无内链页面中,随机抽100个,给它们各加一条来自相关正文的内链,其余580个保持原样。这一步的关键是“随机抽取”,目的是让被改动的100个页面在内容质量、发布时间上与未改动的页面大致可比。
接下来观察日志。假设一周后,这100个页面中有明显更多比例出现抓取记录,而未改动的580个仍很少被抓取。这个结果支持“正文内链影响抓取发现”,但它仍不能单独证明因果,因为同一周可能还有其他变化,比如站点地图更新、服务器响应变快。要排除这些,需要保证这一周内除内链外没有其他批量改动。
如果一周后两组都没有变化,那么“内链不足”这个解释就被削弱,下一步应转向检查服务器响应、robots 规则或页面是否被判定为重复。注意:robots.txt 的抓取限制只影响爬虫是否允许访问,不等于可靠的索引移除;即使允许抓取,页面也不一定被收录。
第一,样本量要够,但不必追求统计显著。假设100个改动页面里只有3个出现抓取,和30个出现抓取,对下一步决策的含义完全不同。前者不足以支撑扩大改动,后者值得在更大范围复制。
第二,分组轴只能有一个主变量。如果同时给部分页面加内链、又改标题、又换URL,那么无论结果如何都无法归因。多变量同时改动只适合“先看整体方向”,不适合定位原因。
第三,对照组要保留。很多人会把所有页面都加上内链,然后观察整体抓取是否上升。这样做失去了对照,一旦上升也无法区分是内链起效还是季节性或站点整体权重变化。
如果内链对照组没有出现预期差异,不要立刻否定内链的作用,而要检查实验本身是否被污染。常见污染包括:改动后页面被其他页面重复引用,导致实际内链数远超预期;或者站点地图在同一时间被重新提交,使所有页面同时获得一次抓取机会。这些都会让对照组失去区分度。
调整方式是:下一轮选择另一条分组轴,例如按“是否在栏目页首屏可见”分组,并确保这一轮不再同时改动内链。每一轮只验证一个变量,记录该变量的改动时间和观察窗口。这样即使某一轮结果不明确,也能为下一轮排除一个解释。
需要提醒的是,站点地图不保证收录,HTTPS 也不保证安全无漏洞或排名。这些因素不应被当作分组轴,除非你确实在测试它们对抓取频率的独立影响。
按这个顺序,即使最终发现某个变量无效,你也能明确知道下一步该验证什么,而不是在“已抓取/未抓取”的循环里反复打转。