搜索抓取

带参数的 URL 与蜘蛛抓取:追踪参数怎样稀释抓取量

很多站点页面不多,抓取日志里却出现大量带问号参数的 URL。本文说明参数链接是怎么被蜘蛛当成新 URL 的、它如何稀释抓取量并造成重复内容,以及收敛、归一、屏蔽与监控的处理顺序,帮助你把抓取量还给真正需要被发现的页面。

搜索抓取

带参数的 URL 与蜘蛛抓取:追踪参数怎样稀释抓取量

做站的人大多遇到过这种情况:站点实际页面数量并不夸张,抓取日志里却能翻出成千上万条 URL,其中一大半是同一篇内容后面挂了一串问号参数。蜘蛛并不笨,它只是先按 URL 去抓。参数一多,等于给同一篇内容开了很多扇门,抓取量就这样被分掉了。

一个参数就是一条新 URL

对爬虫来说,URL 是页面的身份标识。只要查询串的键或值不同,它就只能当作不同的地址去访问。同一篇文章加上 ?utm_source=weibo、?from=share、?ref=pc,在日志里就是三条记录,抓取、渲染、入库的成本都要重复支付一次。

  • 分享按钮自带的 utm 或 from 参数;
  • 站内搜索、筛选、排序生成的查询串;
  • 广告投放与联盟带来的落地页参数;
  • A/B 测试、版本号、时间戳类的调试参数;
  • 分页或文章列表里被顺手拼上的跟踪字段。

这些参数大多是给统计工具看的,对页面内容没有任何影响,但对抓取路径的影响很直接。

参数 URL 带来的三层影响

稀释抓取配额

蜘蛛在单位时间内愿意访问的 URL 数量是有限的。当同一批内容以数百种参数形态存在时,被访问的额度有相当一部分会消耗在重复页面上,真正需要更新的新页面反而排到了后面。

重复内容与信号分散

多个参数版本内容几乎一致,站内指向这些版本的链接也不统一,蜘蛛看到的是一组高度相似的页面,而不是一个明确的主版本。主版本的抓取频率、内链权重都会因此被摊薄。

路径变长,日志难读

参数还会带来链式跳转:带参页面指向另一个带参页面,链接越爬越散。日志被大量相似 URL 淹没之后,你很难判断哪些页面是真的被冷落了。

处理顺序:先收敛,再屏蔽,最后才谈提交

  1. 收敛来源。分享组件、广告落地页、站内推荐位统一去掉无意义的跟踪参数,或让参数只在统计脚本里读取,不写进链接地址。
  2. 固定规范版本。选一个不带参的 URL 作为主版本,页面上的 canonical 指向它,内链、Sitemap、面包屑也都只写干净地址。
  3. 区分有无价值的参数。筛选、分页这类会影响页面内容的参数,如果确定要参与索引,就给它稳定的规范地址;如果只是临时组合,考虑用 robots 或页面上的 noindex 处理。
  4. 最后再考虑屏蔽。robots.txt 里屏蔽参数并不等于 URL 不存在,蜘蛛仍可能从外链发现它,只是不抓取。若这些参数 URL 有外部链接,屏蔽会连带损失链接信号,需要按实际情况权衡。
要提醒的是,屏蔽是省事但粗糙的手段。它会让你同时失去对这批 URL 的抓取与观察,日志里只剩“已发现未抓取”,排查时反而缺少线索。能用规范 URL 解决的部分,尽量不用屏蔽来解决。

把规范版本固定成默认写法

真正有效的做法是让干净 URL 成为站内默认写法:导航、正文内链、相关推荐、分页组件、Sitemap 全部输出无参地址;统计参数交给前端脚本或统计平台自动识别,不再拼进 href。这样蜘蛛从任何入口进站,看到的都是同一套地址,重复抓取自然减少。

如果分页或筛选必须保留参数,至少让同一组条件只有一个可访问的地址,并让页面自身的 canonical 与内链保持一致,而不是让每一条筛选组合都变成独立入口。

用日志验证效果

  • 统计日志中带问号 URL 的占比,看它是否在逐步下降;
  • 检查参数 URL 的抓取频次,确认蜘蛛访问重心回到主版本;
  • 对比处理前后被抓取 URL 的总数与去重后的数量;
  • 观察新发布页面的首次抓取间隔是否缩短。

参数问题很少一次清干净,通常是一批改完,新模块上线又带进来一批。把“内链只写规范地址”当成上线检查项,比事后从日志里翻找要省力得多。