搜索抓取

筛选参数与排序参数:列表页组合出的 URL,怎么让蜘蛛少走弯路

列表页上的筛选、排序、分页参数叠加后,会产生大量内容重复的地址,持续消耗抓取资源。本文说明参数 URL 的常见来源、如何判断哪些值得保留,以及 canonical、robots.txt、内链和 Sitemap 各自能做什么,最后给出用访问日志验证调整效果的方法。

搜索抓取

筛选参数与排序参数:列表页组合出的 URL,怎么让蜘蛛少走弯路

列表页上的筛选、排序、分页按钮,对用户来说是几秒钟的操作,对搜索引擎来说却可能是成百上千个新地址。参数一多,蜘蛛在同一个内容集合里打转,真正需要被抓的详情页反而排在了后面。

参数 URL 是怎么被制造出来的

常见的有几类:

  • 筛选参数:价格区间、品牌、颜色、地区等,每多一个维度,组合数量就会相乘。
  • 排序参数:按销量、按价格、按时间,同一批商品的顺序不同,URL 就不同。
  • 分页参数:页码本身通常可以保留,但和筛选叠加后会产生大量长尾组合。
  • 跟踪与会话参数:来源标记、推荐位 ID、临时会话串,对页面内容没有任何影响。

这些地址返回的页面往往只有部分内容不同,标题、正文和大部分列表项高度重合。

先判断:哪些参数页值得保留

不是所有参数页都该被处理掉。判断标准可以简单一些:这个地址是否有真实的搜索需求,是否有独立于其他页面的内容。带明确主题的筛选页(比如“某品牌在某城市”)可能本身就有用户主动搜索,保留并给它稳定的标题是合理的;纯排序、纯跟踪参数则基本没有独立价值。

处理参数 URL 的目标不是把地址数量压到最少,而是让蜘蛛把时间花在内容不同的页面上。

可以直接用的几种做法

canonical 指向规范版本

给参数页指定一个规范地址,让蜘蛛知道哪个版本是“主”的。注意 canonical 要自洽:规范页自己也要指向自己,也不要在多个版本之间互相指向,形成环。

robots.txt 与 noindex 的分工

如果某个参数组合不需要被抓,可以在 robots.txt 中屏蔽对应路径模式。但要记住两者的区别:被 robots.txt 屏蔽的 URL,蜘蛛无法读取页面上的 noindex 指令。想用 noindex 让页面退出索引,就不能同时用 robots.txt 挡住它,否则指令永远送不到。

内链只指向规范版本

页面上生成的链接,尽量只输出规范形态。如果模板在每个卡片上都挂一串带参数的外链,等于主动把蜘蛛往重复地址上引。

Sitemap 里只放规范 URL

Sitemap 是清单,不是原料堆。把参数组合全部塞进去,等于给蜘蛛列了一份包含大量重复内容的抓取任务。清单里出现的地址,最好是真正希望被了解的那些。

用日志确认效果

调整之后,从访问日志里筛出蜘蛛请求,看参数 URL 的抓取次数有没有下降、规范地址的抓取有没有上升。如果参数 URL 仍然占据大部分抓取请求,说明还有链接入口在持续暴露它们,需要回到模板层面查找。

别把路堵死

分页和必要的筛选入口,是用户和蜘蛛走到深层内容的通道。一刀切地屏蔽所有带问号的地址,可能让本来能被发现的页面失去入口。留出主路径,收掉重复分支,通常比全面封禁更稳妥。