结论先行:当筛选、排序、分页等参数可以自由组合时,把“所有参数组合”都当作有效地址,通常不可维护;更可行的做法是只承认一组可枚举、可验证、有独立内容价值的地址为有效集合,其余一律归入“不主动提交、不承诺收录”的类别。但这个结论有前提,也存在一个会让它失效的反例,下面分开说。
做法一:只保留白名单参数。条件是参数语义清晰、组合数量有限,且每个保留组合确实对应不同的内容视图。例如筛选条件只有“地区、类别、页码”三类,且每类取值固定,那么可以枚举出有限集合,逐条判断是否值得保留。
做法二:不枚举,靠页面自身信号决定。条件是参数由用户输入或外部拼接产生、取值几乎不可预测,站点又无法在服务端做归一化。此时更现实的目标不是“定义全集”,而是定义“哪些地址允许被抓取、哪些地址即使被抓到也不进入有效集合”。
两种做法的代价不同:白名单可控但需要持续维护,参数新增时要同步更新;靠信号判断省事,但边界模糊,容易出现同一内容对应多个地址、彼此信号互相稀释的情况。
不管选哪种做法,判定一个地址是否进入有效集合,可以看三点:
一个实际动作是:先在服务端对参数做归一化,把无意义参数剥离或重定向到规范地址,再观察抓取记录中这些地址的出现频率是否下降。如果下降,说明归一化生效,下一步可以收紧白名单;如果没有变化,说明参数是在客户端拼接或抓取路径未经过归一化,需要先修链路再谈集合定义。
如果参数组合虽然数量庞大,但每个组合都对应真实且互不重复的内容——例如每个组合代表一个独立的数据切片,且这些切片有各自的检索需求——那么“只保留有限白名单”就会误伤。此时把大量地址排除在有效集合之外,等于主动放弃这些内容被发现的可能。判断依据不是组合数量本身,而是这些组合是否各自承载独立内容。若答案是肯定的,就需要改为按内容价值分层,而不是简单按参数形态一刀切。
另外要注意,robots.txt 的抓取限制不等于可靠的索引移除,站点地图也不保证收录。把地址写进站点地图、或在 robots.txt 中禁止抓取,都不能单独证明该地址是否属于有效集合,只能作为辅助信号。
先取一段时间的抓取记录,按参数形态分组,统计每组地址的数量与被抓取情况,再对照页面主体内容是否可区分。据此把地址分成三类:明确保留、明确排除、待观察。对“待观察”类先不做提交动作,只记录其状态变化;等归一化或内容判定规则稳定后,再决定并入保留还是排除。这样做的结果是,有效地址集合会随着证据增加而收敛,而不是随着参数增长而膨胀。