搜索抓取

站内搜索页与筛选参数:抓取入口的取舍与收敛

站内搜索页和筛选页通常由参数生成,数量大、差异小,容易占用抓取资源。本文从页面特征出发,给出允许、限制、屏蔽三种处理方式,并说明如何用内链、robots.txt、canonical 与抓取日志核对实际路径,让蜘蛛回到重要内容页。

搜索抓取

站内搜索页与筛选参数:抓取入口的取舍与收敛

站内搜索页和筛选页是很多站点抓取日志里出现频率很高的一类 URL。它们通常由参数拼出来,数量大、内容相似,蜘蛛一旦进入就容易反复抓取。要不要让这些地址被抓,不能一概而论,需要结合页面是否有稳定搜索需求、是否会产生大量重复内容来判断。

先看这类 URL 的三个特征

  • 由关键词参数或筛选条件生成,同一批内容可能存在多种参数组合。
  • 页面主体多为列表,内容与分类页、标签页高度重合。
  • 部分搜索页在无结果时仍返回 200,容易形成空壳页。

这三点的直接后果是:蜘蛛把抓取配额花在低差异页面上,重要详情页的抓取频次被摊薄。核对时可以在日志里按路径前缀统计访问量,看搜索页占比是否明显高于内容页。

三种处理方式及适用场景

是否放开抓取,取决于页面能否带来独立价值。常见有三种做法:

  1. 允许抓取并保留:搜索页本身有稳定流量或承担导航作用,比如品牌词聚合页、热门标签页。这类页面应给出独立标题与说明文字,避免只有列表。
  2. 限制抓取但保留入口:页面需要有真实用户入口,但不希望蜘蛛遍历参数组合。可以用 robots.txt 屏蔽带参数的路径,同时在内链中保留一个不带参数的规范地址。
  3. 直接屏蔽:纯筛选、排序、会话跟踪类参数,通常没有独立需求,屏蔽后能减少 URL 被发现的数量。
屏蔽前先确认该路径没有被 Sitemap 或其他内链大量引用,否则会出现“已声明但被禁止”的矛盾,抓取日志里也会留下反复尝试的记录。

用内链控制抓取路径

蜘蛛的抓取路径主要由内链决定。如果每个筛选条件都生成一个可点击链接,参数组合会快速膨胀。更稳妥的做法是:

  • 筛选入口只保留必要维度,其余条件用表单或前端交互实现。
  • 列表页的分页链接保持可抓取,但排序、视图切换等参数不生成独立链接。
  • 在页面中给出明确的规范地址,方便蜘蛛归拢同一批 URL。

从日志核对实际抓取情况

调整后需要回到日志确认效果,可以关注以下几个指标:

  • 搜索页或筛选页的抓取请求数占总抓取的比例是否下降。
  • 同一路径下不同参数组合的抓取数量是否收敛。
  • 重要详情页的首抓时间与回访间隔是否更稳定。
  • 是否仍有被屏蔽路径的抓取尝试,以及来源是内链还是外部链接。

如果屏蔽后抓取量下降但重要页面没有明显变化,说明之前的抓取预算确实被低价值页面占用。如果重要页面访问也同步减少,需要检查内链是否过于单薄,蜘蛛找不到新的入口。

Sitemap 与 canonical 的配合

Sitemap 只放希望被抓取的规范地址,不要把搜索结果页、筛选页批量写进去。对于确实要保留的搜索聚合页,放在 Sitemap 中的数量应可控,并保证页面内容与普通列表页有区分。canonical 用于把参数变体指向主地址,但它只是建议,不能替代 robots.txt 的屏蔽或内链的取舍。

服务器稳定性带来的影响

搜索页通常涉及查询计算,响应时间可能比静态页长。如果这类页面频繁超时或返回 5xx,蜘蛛的抓取节奏会受到影响,严重时连正常页面的抓取也可能被拖慢。日志里可以按状态码和响应时间筛选,确认问题是否集中在参数化地址上。

整体思路并不复杂:先判断页面价值,再决定放开、限制还是屏蔽,最后用日志核对抓取分布是否回到重要页面上。这个过程不需要一次做完,按路径分批调整、逐步观察,更容易看出哪一类 URL 在消耗抓取资源。