先给出结论:不要按“已发现/未发现”直接分组比较,而要先按页面模板和入链来源分层,再在层内构造可对照的两组。因为“是否被发现”本身是结果,用它当分组变量会把模板差异、入链位置差异混进结论里。可执行的第一步是:从你手上的页面清单中,为每个URL补齐三个字段——模板类型、最近一次获得站内链接的来源页、该来源页是否已被抓取。补齐后,你会发现很多“未发现”页面的共同点并不是内容质量,而是它们只从同一类低优先级列表页获得链接。
假设你有1000个批量生成的页面,抓取日志显示其中300个被访问过,700个没有。直觉做法是把300个当实验组、700个当对照组,比较标题长度、正文词数、内链数量,然后得出“正文更长的页面更容易被发现”。这个结论几乎不可靠,原因是模板类型同时影响正文长度和链接位置:详情模板正文长,且通常挂在分类页下;筛选结果模板正文短,只从站内搜索或分页获得链接。两组从一开始就不是同一类对象。
更稳妥的做法是承认一个前提:你想验证的是“某个内链改动是否让更多页面被发现”,而不是“已发现的页面有什么特征”。前者需要可比的组,后者只是描述。区分这两种问题,决定了后面所有分组动作。
把清单按两个维度分层,层内再谈对照。模板维度看渲染方式和URL生成规则是否一致;入链维度看页面主要从哪类位置获得站内链接。常见的入链来源可以粗略归为:主导航与面包屑、分类或标签列表、正文内嵌链接、分页、站内搜索结果页。同一模板内,只从分页获得链接的页面和从分类列表获得链接的页面,抓取机会本就不同。
分层之后,如果某一层内“已发现”与“未发现”都有足够数量,这一层才适合做对照。若某层几乎全部未被发现,说明问题可能出在整层的入口设计上,而不是层内个体差异,此时对照实验应放在“给该层增加一个入口”这个动作上,而不是比较层内页面特征。
在同一模板下,找出入链来源类型相同、但发现状态不同的页面,逐一配对。例如同属详情模板、同样只从分类列表获得链接,一个被抓取一个没有。配对后比较它们与来源页的距离、来源页自身是否被抓取、链接是否在初始HTML中。这种配对能排除模板差异,但样本量往往偏小。
如果多个未发现页面共享同一个来源页,把来源页当作分组单位。给其中一半来源页增加指向目标页的正文内链,另一半保持原状,然后观察目标页的抓取变化。这样做的好处是处理动作落在来源页上,目标页本身不动,减少混淆。前提是两组来源页在模板、层级和自身抓取频率上大致可比。
若无法同时构造两组,可以选一个时间窗处理某一层,同时保留另一层不动作为参照。这里的关键是记录处理前后的抓取日志,而不是只看“发现数量是否上升”。抓取量上升还可能来自站点地图更新、外部链接变化或抓取配额整体调整,需要结合日志中抓取来源字段判断。
假设某站点有800个商品页,全部由同一模板生成,其中500个只从分页列表获得链接,300个从分类列表获得链接。日志显示分类列表下的页面大多被发现,分页列表下的页面大多未被发现。此时不应比较这800个页面的正文长度,而应把分页列表这一层单独拿出,选其中50个来源分页,给其中25个分页增加指向目标商品页的正文内链,另25个不变。一段时间后,比较两组目标页在日志中的首次抓取记录。若处理组出现抓取而对照组没有,且同期站点地图和外部链接未变动,才能把变化更多归因于这次内链改动;若两组都出现抓取,则更可能是抓取配额或站点整体变化所致。
实际动作是:先在清单中补全模板类型和入链来源两个字段,再决定在哪一层内构造对照。这个动作的结果会直接改变下一步——如果分层后发现某一层几乎没有可比样本,就不该继续做层内比较,而应改为测试“新增入口”这一处理;如果分层后每层都有可比样本,则可以进入配对或分组处理阶段。记录时保留原始日志字段,不要只记“已发现/未发现”这个二元结果,否则后续无法区分是链接位置变化还是抓取调度变化。robots.txt 的抓取限制不等于可靠的索引移除,站点地图也不保证收录;这些现象可以作为背景,但不能单独用来证明分组划分正确。