搜尋抓取

带參數的 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 的總數與去重後的數量;
  • 观察新發布頁面的首次抓取間隔是否缩短。

參數問题很少一次清干净,通常是一批改完,新模块上线又带進来一批。把“内鏈只寫規范地址”当成上线检查項,比事後從日誌里翻找要省力得多。