搜索抓取

参数化 URL 越滚越多:筛选、排序与追踪参数怎么收敛

电商和内容站的筛选、排序、追踪参数会让同一批内容裂变出大量 URL,在有限的抓取额度里持续消耗蜘蛛的访问。本文梳理参数 URL 的常见发现路径,以及 canonical、robots.txt、链接规则和 Sitemap 各自能起到的作用,帮你把抓取次数留给真正需要收录的页面。

搜索抓取

参数化 URL 越滚越多:筛选、排序与追踪参数怎么收敛

做电商或内容站的运营,常常会遇到这样一种情况:同一个商品、同一篇文章,页面上被生成了几十甚至上百个地址——加个筛选条件是一个,换个排序方式又是一个,带个来源追踪参数还是一个新的。这些 URL 都会被蜘蛛发现,也都会占用抓取额度,但真正需要被收录的往往只有其中一两个。

参数 URL 是怎么被蜘蛛发现的

蜘蛛并不知道哪个地址是规范版本,它只会顺着链接和 Sitemap 走。参数 URL 的来源主要有几处:

  • 页面上的筛选、排序、分页控件,每一个可点选项都可能是一个新地址;
  • 站内搜索结果页、标签聚合页;
  • 推广链接、分享链接里带上的 utm 参数、会话 ID;
  • Sitemap 或接口中不小心带出的参数化地址。

只要这些地址在 HTML 里以可跟随的链接形式出现,蜘蛛就会把它们排进队列。问题不在于被发现,而在于发现之后,它们会跟真正重要的页面争抢有限的抓取次数。

先分清三类参数,再决定怎么处理

影响内容展示的参数

比如价格区间、颜色、尺寸筛选。这类地址对应的页面内容确实不同,如果本身有搜索需求,是可以保留并做规范化的;如果只是给用户中途筛选用,没有独立价值,就适合收紧。

不影响内容的参数

排序方式(价格从低到高)、视图切换(列表或网格)、追踪参数(utm_source、gclid)。这些地址指向的内容基本相同,属于典型的重复 URL,应当尽量不生成可跟随链接,或者通过 canonical 指明主版本。

分页与会话类参数

分页本身是正常的抓取路径,但要避免每页都叠加一串筛选条件;会话 ID、时间戳之类的参数一旦进入 URL,就等于每次访问都造出一个新地址,对抓取和缓存都不友好。

收敛手段各自能做到哪一步

  1. canonical 标签:把变体指向主版本,告诉搜索引擎哪个是规范地址。它不阻止抓取,只影响索引判断,适合内容相同但地址不同的情况。
  2. robots.txt 屏蔽:直接不让蜘蛛抓取带特定参数的路径,能省下抓取额度。但已经抓取并索引的地址不会因此自动消失,需要配合其他方式处理。
  3. 链接层面的控制:把筛选、排序等控件改成表单提交或按钮事件,而不是普通的可跟随链接;必须保留链接时,统一加上 canonical,或者用 nofollow 标记。
  4. Sitemap 只放规范版本:Sitemap 是站点主动提交的 URL 清单,里面出现什么,蜘蛛就更可能去抓什么。变体地址不应出现在这里。
  5. 参数顺序统一:如果确实需要保留带参数的地址,把参数顺序固定下来,避免 ?a=1&b=2 和 ?b=2&a=1 被当成两个 URL。

几个容易踩的坑

  • 只加了 canonical,却在页面上保留大量可跟随的参数链接,抓取浪费依然存在;
  • 用 robots.txt 屏蔽分页,导致深层商品页失去唯一的发现路径;
  • 对全部筛选页一刀切屏蔽,把本来有搜索量的长尾页面也一起丢掉;
  • Sitemap 里同时存在规范版本和变体版本,等于给蜘蛛两份互相矛盾的指引。
判断标准可以简单一些:这个地址如果被用户单独分享出去,是否值得打开?如果不值得,它大概也不需要被蜘蛛抓取。

回到抓取额度这件事

站点能获得的抓取次数不是无限的,服务器响应越慢、错误越多,蜘蛛愿意投入的并发就越少。参数 URL 的收敛,本质上是把这份额度从重复页面上收回来,交给真正需要更新的内容页和新上线的 URL。可以先从抓取日志里挑出被抓次数最多、但内容高度相似的地址,看看它们是从哪个链接进来的,再决定是改链接结构、加 canonical,还是直接屏蔽。

不需要一次改完。每隔一段时间看一次日志,把新增的参数类型收一收,抓取分布通常会慢慢朝着你希望的方向走。