搜索抓取

站内搜索页与筛选参数:URL 发现的失控入口怎么收敛

站内搜索页和筛选参数是 URL 发现中最容易失控的两类入口,一个跟着用户输入生成地址,一个靠参数组合无限扩张。本文说明它们为什么带来抓取负担,以及从日志排查、参数屏蔽、链接收敛到验证检查的处理顺序,并提醒避免误伤正常页面。

搜索抓取

站内搜索页与筛选参数:URL 发现的失控入口怎么收敛

很多站点的 URL 数量并不是由内容量决定的,而是由站内搜索页和筛选参数决定的。同一批商品或文章,经过参数组合之后可以衍生出成千上万个可访问地址,这些地址会顺着内链和页面里的链接进入搜索蜘蛛的发现队列。如果不对这类入口做约束,抓取资源会被大量低价值地址占用,真正需要被看到的页面反而排到后面。

站内搜索页为什么容易变成地址工厂

站内搜索结果的 URL 通常带有查询词,比如 /search?q=关键词。用户搜什么,页面就生成什么地址,这些地址往往还会出现在“相关搜索”“热门搜索”或搜索历史的链接里。搜索蜘蛛顺着这些链接走,就会把用户输入的随机词也当成需要抓取的 URL。

更麻烦的是,搜索结果页本身通常没有独立价值:内容是从其他页面聚合来的,换个词就是另一套组合。它既不是原创内容,又数量无限,属于典型的发现负担。

筛选参数:组合爆炸比单个搜索页更隐蔽

筛选类页面常见形态是颜色、尺寸、价格区间、排序方式等参数叠加。两三个维度的组合就能产生几百个地址,如果再加上排序参数(?sort=price_asc)和分页参数(?page=2),数量会继续放大。

需要区分的是:一部分筛选组合确实有搜索需求,比如“黑色 42 码跑鞋”,这类页面可以保留并让它参与发现;另一部分只是用户随手点出来的中间状态,没有独立价值。

收敛的基本思路

  1. 先看日志再动手。从服务器日志里找出实际被频繁抓取的参数地址,按抓取次数排序,判断哪些是蜘蛛在反复试探、哪些是真正有流量的页面。
  2. 区分可索引与不可索引。保留有搜索需求的筛选组合,其余通过 robots.txt 屏蔽参数路径,或在页面上加 noindex 标记。两者叠加使用更稳妥,因为 robots.txt 只阻止抓取,并不阻止地址留在索引里。
  3. 链接层面少给入口。筛选链接如果不是用户必需,可以改成按钮交互或只在点击后加载,减少页面上可直接跟随的地址数量。
  4. 规范参数写法。统一参数顺序、去掉无意义的跟踪参数(如各种 utm 串、会话 ID),避免同一个筛选结果生成多个地址。
  5. 给分页和排序一个固定出口。分页地址尽量规整,排序参数只保留默认值,不必要的排序组合不值得单独成为可抓取地址。

不要让收敛动作误伤正常页面

屏蔽参数时容易连带把正常页面挡住,比如把问号之后的全部内容都禁掉,结果带参数的正文页也进不来。建议按参数名精确匹配,而不是按符号一刀切。改动之后,用 robots.txt 测试工具和页面抓取工具各验证一次,确认目标页面仍可抓取。

URL 发现的目标不是让蜘蛛看到更多地址,而是让它看到更值得看的地址。数量宽松的入口,往往换来的是抓取效率的下降。

服务器在这件事里的位置

参数地址多,抓取请求就会变密。如果服务器响应变慢,搜索蜘蛛通常会降低抓取频率,正常页面的发现和更新也会被拖慢。所以参数收敛不只是内容层面的事,也关系到服务器能不能稳住抓取节奏。日志里如果出现大量同一路径不同参数的高频请求,就是该处理的信号。

一个可执行的检查顺序

  • 统计近一个月日志中带参数的 URL 数量与占比。
  • 列出抓取最频繁的前 50 个参数地址,逐个判断是否有价值。
  • 确定保留清单与屏蔽清单,先小范围测试。
  • 调整页面链接,减少通向无价值参数组合的入口。
  • 观察两周,确认抓取总量下降但目标页面抓取次数没有减少。

参数收敛不会一次做完,站点改版、新筛选功能上线都可能重新带来一批地址。把这件事当成定期回看的例行工作,比一次性处理完更实际。