先给结论:不要按“已收录/未收录”分组,因为发现与否是结果,不是原因。更可操作的做法是按上线批次、内链层级、内容模板这三个可核对变量,把页面切成两个对照组,再让百度收录入口的日志或抓取记录去回答“哪一组先被动过”。分组的目的不是证明谁对,而是把“到底是谁的责任”变成一条能复查的线索。
假设一个站点一次性上线两百个详情页,用的同一套模板,几天后只有其中几十个出现在百度收录入口的抓取记录里。运营说内容没问题,开发说链接都生成了,SEO说结构不对。三方各有一半道理,但谁也说服不了谁,因为大家看的是同一个笼统结果。
这时真正要做的不是继续争论,而是承认“被发现”这件事至少有两个成立条件:页面必须能从某个已知入口被走到,且走到之后返回的内容值得被抓。前者是路径问题,后者是内容问题。把这两件事混在一起看,任何结论都不可靠。
解释一:路径断了。页面虽然在数据库里,但没有任何可爬链接指向它,或者指向它的链接藏在需要交互才出现的模块里。这种情况下,页面本身质量再高也不会被主动发现,因为它对爬虫来说不存在入口。
解释二:内容不值得抓。页面能被走到,但同一模板下大量正文高度重复,或者正文依赖脚本渲染、返回的初始 HTML 几乎是空壳。爬虫走到了,判断价值低,于是只抓了一小部分就停手。
这两种解释在结果上完全一样——都是“部分被发现”,但对应的修复动作完全不同。前者要补内链,后者要改模板或渲染方式。如果不加区分就同时动手,很可能改了很多却不知道哪一步起了作用。
可用的切法有三种,选一种作为主变量,其余两种作为需要保持一致的干扰项。
关键是每组都要有明确的入选条件,写下来,让另一个人照着条件也能选出同样的页面。如果选出来的两组连自己都说不清为什么在一起,这个对照组就没有意义。
分好组之后,去百度收录入口相关的抓取记录里比对两组的被抓时间分布。这里要看的是顺序和节奏,不是“抓了多少个”这个总数。
如果内链层级浅的那一组明显更早被访问,而两组内容质量没有差别,那么路径解释更站得住。反过来,如果两组被访问的时间差不多,但模板重复度高的那一组被抓后很快不再出现,内容解释更合理。抓取总量归零或偏低本身不能单独说明问题,它也可能只是站点整体抓取预算被其他栏目占用,或者记录本身不完整。
一个假设的例子:某站点把五十个浅层页面和五十个深层页面放在同一次复查里,结果浅层组有四十个在记录中出现,深层组只有五个。这个差距不足以直接下结论,但如果把深层组中原本有外部链接的几个页面单独拎出来,发现它们也在记录里,那么“深层=不被抓”就不成立,真正起作用的是有没有额外入口。
争议往往卡在“谁先改”。比较稳妥的顺序是:先只补内链,让深层组多一个从已有页面出发的链接,其他条件不动。等一个复查周期后,再看这一组的被抓记录有没有变化。如果变化集中在补了链接的页面,路径解释得到支持,下一步就可以扩大补链范围;如果没有变化,说明问题更可能在内容侧,再去检查渲染和重复度,而不是继续加链接。
这个动作的价值在于:它把“开发改代码”和“运营调内容”这两件本来会互相推诿的事,拆成了先后可验证的两步。每一步只动一个变量,结果才能归因。需要提醒的是,站点地图提交并不保证收录,robots.txt 里放开抓取也不等于页面会被索引,这两点不能当作分组有效性的前提。
最后要接受一个现实:对照组只能缩小范围,不能给出百分之百的因果。如果复查后两组差异依然模糊,那就说明当前选的变量不是主因,应该换一个变量重新分组,而不是硬把现有数据解释成某个结论。