搜索抓取

参数化 URL 与抓取路径:筛选、排序链接会把蜘蛛带多远

站内筛选、排序和分页链接会生成大量带参数的 URL,蜘蛛发现速度快、数量多,容易把抓取资源耗在内容相近的页面上。本文梳理这些地址的发现路径、蜘蛛的常见反应,以及固定规范版本、控制可抓维度、调整 Sitemap 与分页等处理思路,并说明如何用抓取日志验证处理效果。

搜索抓取

参数化 URL 与抓取路径:筛选、排序链接会把蜘蛛带多远

很多站点的抓取问题不是出在首页或栏目页,而是出在筛选、排序、分页这些带参数的链接上。运营一上线筛选功能,蜘蛛很快就能顺着这些链接发现几十上百个变体地址,抓取日志里的 URL 数量在几天内翻倍。这些地址大多内容相近,却各自占用一次抓取机会。

参数 URL 是怎么被蜘蛛看到的

常见入口有三类。一是页面上的筛选链接本身就是可点击的 a 标签,蜘蛛顺着 DOM 就能拿到;二是站点地图或分页聚合页里列出了带参数的地址;三是内容由脚本渲染,脚本请求接口后生成链接,蜘蛛在渲染阶段同样可能拿到。三类入口叠加,参数 URL 的发现速度往往比新文章还快。

组合爆炸:几条参数就能撑出上千个地址

假设一个列表页有 5 个筛选项、3 种排序、每页 20 条共 30 页,理论上可以拼出 5×3×30 的地址组合。实际数量往往更多,因为参数顺序不同又被当成不同 URL。蜘蛛会把这些地址一个一个放进待抓队列,站点的抓取资源被大量消耗在内容几乎一样的页面上,真正需要更新的详情页反而排在后面。

蜘蛛对这类地址的常见反应

  • 首次抓取大多返回 200,内容与主列表高度相似;
  • 重复抓取多次后,部分地址会被降低抓取频次;
  • 如果参数地址返回空结果页,容易被当成低质页面;
  • 如果筛选页触发大量数据库查询,响应变慢,抓取超时会增多。

比较稳妥的处理方式

  1. 固定一个规范版本。只让一组参数组合可以被抓取,其余组合用 rel=canonical 指回主列表,或在服务端统一重定向。
  2. 控制可抓取的维度。把筛选维度分成有搜索需求和纯浏览两类,只放行前者,后者用 robots.txt 或页面级 noindex 收住。
  3. 排序参数不参与抓取。排序通常对用户有用,对蜘蛛意义不大,可以在链接上加 nofollow,或让排序地址指向不带排序参数的规范地址。
  4. Sitemap 只放规范 URL。不要把带参数的地址写进站点地图,否则等于主动给蜘蛛指路。
  5. 分页保持可抓取,但限制深度。前几页放行,后面的分页用“查看更多”或按需加载,避免无限翻页。

顺带影响:抓取压力会传导到服务器

参数页通常不走缓存,每次请求都要查一次数据库或做一次聚合计算。当蜘蛛在短时间内集中抓取这类地址,服务器负载上升,正常用户的访问速度也会受影响。把参数地址收敛掉,既省抓取预算,也减轻服务器在抓取高峰期的压力。

怎么验证处理有没有效果

处理之后,重点看抓取日志里参数 URL 的占比是否下降、状态码分布是否更集中、详情页的抓取次数是否回升。如果日志里参数地址仍然很多,需要回头检查内链、站点地图和脚本渲染三条路径,找出还在持续输出这些链接的位置。

参数 URL 不是不能存在,而是要有边界。把有限的抓取机会留给真正有内容差异的地址,是站点运营里成本较低、见效相对可控的一步。