搜索抓取

搜索蜘蛛抓取:URL 查询参数组合膨胀造成的抓取路径稀释与收敛梳理

站内排序、筛选、追踪类参数会把同一内容分裂成大量可发现地址,稀释抓取预算。本文按日志形态分布、内链暴露核对、canonical 一致性三个顺序梳理排查方法,并给出内链规范、Sitemap 收敛、筛选页限制组合等可落地的处理手段与验证观察周期。

搜索抓取

搜索蜘蛛抓取:URL 查询参数组合膨胀造成的抓取路径稀释与收敛梳理

URL 查询参数在站内很常见:排序、筛选、分页、追踪、会话标识都会挂在问号后面。对用户来说这些参数让页面更灵活,但对搜索蜘蛛来说,每个参数组合都可能被当成一个新地址。参数一旦可以自由组合,同一条内容会分裂出大量入口,抓取预算被摊薄,真正需要更新的页面反而被排在后面。

为什么参数组合会被当成新 URL

蜘蛛判断地址是否访问过,主要依据完整 URL 字串,而不是页面内容。只要参数顺序、数量、取值不同,就会被记录成一条新的待抓取链接。如果站点没有给出明确的规范信号,蜘蛛只能按自己的规则去猜,通常结果是保留一部分、丢弃一部分,于是日志里出现大量抓了但没带来价值的请求。

先分清参数的类型

  • 内容型参数:参数不同,页面主体内容确实不同,例如商品详情的关键规格。
  • 排序与视图型:仅改变排列顺序或展示方式,主体内容基本一致。
  • 筛选型:多条件组合,可能产生成百上千种组合。
  • 追踪与会话型:utm、sessionid、from 等,与内容无关。
  • 分页型:页码参数属于正常的抓取路径,需要保留。

分类的目的不是一刀切地屏蔽,而是决定哪些需要被蜘蛛发现,哪些应该收敛到规范地址。

排查顺序

第一步:从日志看参数形态分布

抽取一段时间的抓取日志,按路径分组统计带参数的请求占比,再统计参数键名的分布。重点看三类信号:同一路径的参数键超过几十种;参数请求返回 200 但内容高度相似;参数请求占比远高于无参数请求。这三点同时出现,基本可以确定存在膨胀。

第二步:核对这些参数是否真的被内链暴露

日志里参数 URL 很多,未必是站内链接带来的,也可能是外部引用或历史遗留。检查页面源代码中的链接、Sitemap 中的地址,以及前端脚本动态拼接的地址,确认哪些是主动暴露的入口。只有主动暴露的入口才是可控的。

第三步:检查规范信号是否一致

canonical 标签、内链指向、Sitemap 地址三者应当指向同一个规范 URL。常见问题是指向不一致:canonical 写的是无参数版本,内链却大量带参数,Sitemap 又混入了排序参数。信号互相矛盾时,蜘蛛只能自行取舍,结果往往不可预期。

收敛手段

  1. 内链统一指向规范地址:列表页翻页、排序入口尽量使用固定且简洁的参数形态,避免层层叠加。
  2. canonical 覆盖参数页面:排序、视图类页面统一声明规范地址,避免各自为政。
  3. Sitemap 只放规范 URL:不要把筛选组合写进 Sitemap,否则等于主动扩大入口。
  4. 谨慎使用 robots 屏蔽:被屏蔽的地址如果仍被内链引用,蜘蛛可能记录但不再抓取,规范信号也无法读取,判断反而更模糊。优先用 canonical 收敛。
  5. 限制组合数量:筛选页对无结果组合返回合适响应,避免生成大量空壳地址。
参数处理的判断标准是:这条地址是否承载独立内容。有独立内容就保留并规范,没有独立内容就收敛到主地址。

验证与持续观察

调整后不要只看一天的数据。以周为单位对比参数请求占比、规范地址的抓取频次,以及新内容的发现速度。如果参数请求下降、规范地址抓取稳定,说明收敛在起作用。若参数请求不降反升,需要回头检查是否有新的入口被放开,例如活动页批量生成带追踪参数的链接。

参数治理本质上是把被发现的机会集中到少数有价值的地址上,而不是追求抓取总量。抓取预算有限,入口越清晰,重要页面被及时访问的概率越高。