搜索抓取

URL 参数与蜘蛛抓取:同一页被拆成多个地址后,抓取路径怎么走偏

筛选、排序、追踪参数常常把同一个页面变成十几个 URL,蜘蛛沿着这些链接走,抓取路径就会膨胀。本文讨论如何判断哪些参数该保留、哪些该收敛,以及从内链、canonical 到屏蔽的先后顺序,帮助把抓取次数留给真正需要被发现的页面。

搜索抓取

URL 参数与蜘蛛抓取:同一页被拆成多个地址后,抓取路径怎么走偏

站点里常见这样一类链接:同一个商品列表,用户点一次“价格从低到高”,地址后面就多出 ?sort=price;换一个筛选条件,又变成 ?color=red&size=m;从外部渠道进来,还会带上 ?utm_source=...。对用户来说,页面内容差不多;对蜘蛛来说,这些都是一个个待抓取的 URL。

参数本身不是错误,错的是参数页被当成独立页面大量暴露在抓取路径里,导致抓取次数被摊薄。

一个页面为什么会变成十几个 URL

常见的参数来源有几类:

  • 筛选与排序:颜色、价格区间、销量排序、每页条数。
  • 追踪参数:utm、渠道号、广告点击 ID。
  • 会话与安全参数:jsessionid、token 之类的临时标识。
  • 参数写法不一致:?a=1&b=2?b=2&a=1 被服务器当成两个地址。

这些链接一旦出现在导航、列表页、推荐位里,蜘蛛就会顺着爬。抓取路径从“首页 → 分类 → 详情”变成了“首页 → 分类 → 各种参数组合 → 详情”,路径数量成倍增长。

参数 URL 对抓取路径的三个影响

  • 抓取次数被分散。同一个页面有多个入口,蜘蛛反复抓取内容相近的地址,新发布的详情页反而排到后面。
  • 规范化信号变乱。内链指向带参数的地址,canonical 却指向无参数地址,蜘蛛需要花时间判断谁才是主版本。
  • 日志难以解读。路径分布里混着大量参数 URL,很难看清真正被频繁抓取的是哪些内容页。

先判断哪些参数是“必要”的

不是所有参数页都该屏蔽。判断标准可以简化为两点:这个参数组合是否产生实质不同的内容,以及这个组合是否有用户会主动搜索。

比如“价格 100-200 元的耳机”这种筛选结果页,如果内容确实独立、有搜索需求,可以保留并做规范化;而“按上架时间排序”这类只改变顺序、不改变集合的页面,通常没有必要让蜘蛛逐个抓取。

屏蔽是取舍。用 robots.txt 一刀切掉所有带参数的地址,可能把本来有效的筛选页也挡在门外,需要结合业务判断。

处理顺序:内链、canonical、屏蔽

很多站点一上来就写屏蔽规则,结果内链还指向参数地址,蜘蛛仍然不断发现它们。更稳妥的顺序是:

  1. 统一站内链接。导航、列表页、分页、推荐模块都指向无参数的规范地址,减少参数 URL 的自然入口。
  2. 在参数页上也写 canonical。canonical 指向规范 URL,并且保持内链与 canonical 一致,不要一个指向 A、一个指向 B。
  3. Sitemap 只提交规范 URL。不要把筛选组合、排序页塞进 Sitemap,避免主动把参数页送给蜘蛛。
  4. 剥离纯追踪参数。utm 之类的参数对页面内容没有影响,可以在服务端重定向到干净地址,或在前端生成链接时就不带上。
  5. 最后再考虑 robots.txt 屏蔽。针对确实不需要被抓取的参数模式做限制,同时确认规范页不会被误伤。

用日志和抓取数据验证

处理之后,可以观察站点日志中状态码为 200 的 URL 里,带参数的比例是否下降;参数页的抓取频次是否减少;规范 URL 的抓取是否更集中。这些只是趋势指标,不能保证收录或排名变化,但能帮助判断调整是否生效。

几个容易踩的坑

  • 屏蔽了参数页,但外链仍然指向它,蜘蛛反复发现却抓不到,发现次数被浪费。
  • 只在详情页加 canonical,列表页和筛选页没加,规范化信号仍然分散。
  • 参数顺序不统一,服务端没有做排序或 301 归一,同一组条件产生多个地址。
  • 分页参数与筛选参数混在一起,导致路径层级越来越深,蜘蛛翻到后面就很少再走。

参数问题的核心不是“消灭所有参数”,而是让蜘蛛把有限的抓取次数花在内容真正不同的页面上。把入口收敛、把规范地址说清楚,抓取路径自然会清爽一些。