搜索抓取

筛选参数与站内搜索页:把蜘蛛的抓取引到有效列表

站内搜索和筛选参数很容易生成大量 URL,把蜘蛛的抓取引向没有独立内容的组合页面。本文从参数 URL 的分类讲起,说明组合数量膨胀的原因,再谈内链结构、robots 与 noindex 的取舍,以及日志和服务器负载上值得盯的几个数字。

搜索抓取

筛选参数与站内搜索页:把蜘蛛的抓取引到有效列表

站内搜索页、排序筛选、会话与追踪参数,往往是站点 URL 数量增长最快的部分。它们对用户有用,但对蜘蛛来说,很多组合既没有独立内容,也没有对应的搜索需求,却会持续占用抓取资源,把蜘蛛从真正需要被发现的页面引开。下面按“先分类、再取舍、后监控”的顺序,梳理一遍比较稳妥的处理方式。

一、先把参数 URL 分类,别一刀切

同样是带参数的 URL,处理方式差别很大,可以先按下面的维度分一分:

  • 分页参数:列表翻页,通常属于有效路径,建议保留可抓取,并提供规范的翻页链接。
  • 排序参数:同一批内容换顺序展示,一般不需要作为独立页面被抓取。
  • 筛选参数:要看筛选维度能否构成稳定、有实际内容的列表。品类、地区这类常见筛选可以保留少数组合,多条件叠加则应限制。
  • 会话与追踪参数:对页面内容没有影响,尽量在服务器端忽略或重定向到干净地址。
  • 站内搜索参数:结果页随查询词无限变化,属于需要重点约束的部分。

分类之后往往能发现,真正值得蜘蛛抓的只是其中一小部分,其余大多是路径上的噪声。

二、组合爆炸是怎么发生的

假设一个列表页有 5 个筛选维度,每个维度 4 个取值,理论组合数就是 1024 种。页面上的筛选入口如果是普通 a 标签,蜘蛛会顺着链接层层叠加条件,把大量高度相似的页面翻出来。这些页面内容重复度高,渲染过程还要反复查询数据库,占用服务器资源。

一个实用的观察方法是:在抓取日志里按 URL 是否带参数分组,看参数 URL 在总抓取量中的占比。如果它长期占了明显的大头,而对应页面并没有带来访问,通常说明抓取路线需要收敛。

三、内链结构上的取舍

抓取入口决定蜘蛛往哪走,所以调整要从内链入手,而不是只依赖屏蔽规则。

  • 把有价值的列表页放进导航、栏目页和面包屑,让蜘蛛优先沿这些路径前进。
  • 筛选、排序这类交互,尽量用表单提交或前端事件触发,而不是把每一种组合都写成可直接跟随的链接。
  • 站内搜索结果页一般不建议作为可收录页面。若确认不需要,可以在页面上加 noindex;注意 noindex 生效的前提是蜘蛛能抓到该页面,如果同时在 robots.txt 里屏蔽了整个目录,标签就看不到,反而容易留下大量空壳 URL。
  • 分页保持线性结构,避免“跳到任意页”的链接堆叠。

站内搜索页的两种常见做法

一种是把结果页完全屏蔽抓取,代价是屏蔽之后 noindex 无法生效;另一种是允许抓取但加 noindex,让蜘蛛看到明确信号后逐步降低访问。两种做法各有取舍,建议先在测试目录观察日志,再决定是否全站推行。

四、给蜘蛛一条清晰的抓取路径

  1. 确定一组入口页:首页、主要栏目、少量核心列表。
  2. 从入口页出发,用内链把蜘蛛引到内容详情页,路径尽量控制在三到四跳以内。
  3. 只把稳定、有实际内容的列表 URL 写入 sitemap,不要把所有参数组合都提交。
  4. 对确实不需要抓取的参数目录,在 robots.txt 里做相对宽松的屏蔽,避免误伤正常页面。
  5. 上线后看两到四周日志,观察参数 URL 的抓取占比是否回落。

五、上线后要盯的几个数字

  • 参数 URL 抓取占比:是否在缓慢下降,而不是反复波动。
  • 有效列表页的抓取频次:收敛之后,核心页面有没有得到更多访问。
  • 响应状态分布:如果参数页大量返回 200 但内容雷同,说明收敛还不够。
  • 服务器负载:参数页被大量抓取时,查询和渲染压力会明显上升,收敛后通常会缓解。

整体思路是:把有限的抓取机会优先留给有内容、有入口、有更新价值的页面。筛选参数和站内搜索页并非不能存在,但需要被明确划出边界,蜘蛛才不会在一片相似 URL 里反复打转。