搜尋抓取

URL 參數组合與抓取预算稀释:篩選排序頁的去重核對

站内篩選、排序、追踪參數會生成大量近似 URL,同一内容被多個地址重复發現,抓取预算被稀释。本文從參數来源、内容差异判断、canonical 與連結暴露控制、日誌核對几個方面,整理一份可落地的排查清單,帮助你把抓取次數留给真正需要更新的頁面。

搜尋抓取

URL 參數组合與抓取预算稀释:篩選排序頁的去重核對

当一個頁面可以通過多组參數组合訪問时,蜘蛛會把這些组合当成不同的 URL 分別發現。常见的情况是:同一批商品既有颜色篩選、價格排序,又有分頁和追踪參數,URL 數量在短時間内成倍增長。抓取预算並没有增加,结果就是真正需要更新的頁面回訪變慢。

先確認哪些參數真的改變了内容

不是所有參數都值得被当作獨立頁面。可以抽样對比:去掉參數後,HTML 主体、标题、主要文本是否基本一致;如果只是排序不同或篩選後項目顺序變化,内容重叠度很高,通常不需要獨立抓取。

  • 篩選參數:同一分類下不同條件的结果頁,若只是項目子集變化,需评估是否有獨立搜尋需求。
  • 排序參數:按價格、销量、上架時間排序,通常内容相同,只是顺序不同。
  • 分頁參數:已有分頁序列的讨论,這里關注的是分頁與篩選叠加後产生的组合數量。
  • 追踪參數:来源、活動、會话 ID 等,不應出現在站内連結中,也不應被蜘蛛大量發現。
  • 展示參數:列表视图、網格视图、每頁數量等,多數情况下不影响核心内容。

從連結暴露端控制组合增長

蜘蛛發現 URL 的主要途径仍然是連結。站内篩選如果全部以可抓取的 a 标簽輸出,组合數會迅速膨胀。可以考虑:

  1. 让篩選结果通過表單提交或 JavaScript 交互触發,不生成大量静態可抓連結。
  2. 保留少量有價值的篩選入口,其余组合不主動暴露。
  3. 排序切換預設使用同一 URL,或通過前端參數控制,不寫入服務端連結。
  4. 分頁與篩選不要互相叠加成無限路径,必要时限制可抓取的组合范围。

canonical、robots 與 noindex 的邊界

canonical 可以告诉搜尋引擎哪個 URL 是主要版本,但它不阻止蜘蛛抓取參數頁。robots.txt 的 Disallow 能减少抓取,但被屏蔽的 URL 仍可能因外鏈或歷史记錄被發現;如果頁面本身需要參與索引,屏蔽後也無法传递信号。noindex 适合不希望出現在结果中的頁面,但蜘蛛仍需抓取才能看到该标簽。

這三種手段解决的是不同問题:canonical 處理重复信号,robots 處理抓取訪問,noindex 處理索引收錄。把它們混用,容易得到“抓取没减少、索引也没收敛”的结果。

日誌中的核對清單

用服務器日誌按路径前缀、參數數量、响應狀態分组,观察一段時間内的抓取分布:

  • 同一路径下带參數的 URL 請求量是否遠高于不带參數的版本。
  • 參數组合是否在持續新增,且没有對應的内容更新。
  • 參數頁返回的狀態碼是否正常,内容是否與主版本高度相似。
  • 被大量抓取的參數頁是否反過来挤占了栏目頁、詳情頁的回訪。
  • 站内連結、站点地图、外部入口中是否仍在輸出這些參數组合。

把抓取机會留给内容更新

參數去重不是一次性的清理,而是連結生成規則的長期约束。每次新增篩選、排序或追踪逻辑时,先回答两個問题:這個组合有没有獨立内容價值;它會不會以可抓取連結的形式暴露给蜘蛛。如果答案是否定的,就在前端和連結輸出层收敛,而不是等到日誌里出現大量重复抓取後再补救。

最後需要提醒的是,不同站点的參數结构和抓取表現差异很大。以上清單适合作為排查起点,具体取舍仍要结合自身日誌、内容更新频率和抓取预算来判断,不必追求一次性覆盖所有组合。