搜尋抓取

篩選與排序參數:抓取队列里被悄悄放大的 URL

列表頁的篩選、排序、分頁组合會把同一批内容生成大量地址,蜘蛛顺着一层层參數連結走進队列,抓取被摊薄。這篇文章讲參數是怎么放大 URL 數量的、哪些參數頁值得保留、内鏈與 Sitemap 该怎么收敛,以及如何用日誌和抓取統計確認效果。

搜尋抓取

篩選與排序參數:抓取队列里被悄悄放大的 URL

一個商品列表頁,如果同时提供品牌、價格区間、颜色、尺碼、排序方式和分頁,理论上能拼出的 URL 组合可以達到几千甚至几萬條。這些地址大多由同一批内容生成,却會被蜘蛛当成獨立 URL 排队。抓取预算再宽裕,也经不起這样摊薄。

參數是怎么把地址數量放大的

常见的情况有三類:

  • 组合爆炸:每個篩選维度都是一次乘法。五個品牌、四個價格区間、六種颜色、三種排序,再乘上二十頁分頁,數字很快就上去了。
  • 顺序與寫法不统一:同一组篩選條件,參數顺序颠倒一下,或者大小寫、尾斜杠不同,在蜘蛛眼里就是两個地址,内容却完全一样。
  • 會變化的临时參數:會话标识、来源追踪、時間戳這類參數每次訪問都可能不同,等于给同一個頁面不断生成新地址。

除此之外,站内搜尋结果頁也常被忽略。用戶搜完词把連結分享出去,蜘蛛顺着這條分享連結抓到搜尋结果頁,頁面上又列出一批带參數的地址,路径就是這样越長越乱。

蜘蛛為什么會走進這些地址

多半是站点自己把路铺好的:篩選按钮是可点連結、列表頁底部的推荐里带着參數、站点地图中混入了带參數的地址、内鏈没有区分規范版本。蜘蛛顺着内鏈一條條走,自然就把它們排進了抓取队列。

先判断:這些頁面值不值得被單獨抓

不是所有參數頁都该清理。有些篩選组合本身有稳定的搜尋需求,比如某個品牌搭配某個價位段的列表,用戶會主動去搜。這類頁面如果内容组织得清楚,可以保留獨立的抓取與收錄。真正需要收敛的是那些没有獨立價值、只是机械组合出来的地址。

几種收敛手段,以及各自的代價

内鏈只指向規范版本

把分面連結统一指向不带多余參數的地址,或者让排序、视图切換這類操作不产生新的可抓連結。這是最温和的做法,不挡蜘蛛,只是不给它多余的入口。

统一參數的书寫

固定參數顺序、去掉預設值和空值參數,让同一個頁面只有一種地址形態。這一步放在服務器或 CDN 层就能做,成本低,见效相對直接。

canonical 指向主体頁面

對没有獨立價值的參數组合,让 canonical 指向對應的主列表頁。要留意的是一刀切的風險:如果 canonical 指向的頁面與目前頁内容差异較大,這個信号可能被忽略,反而让判断更混乱。

robots.txt 屏蔽

屏蔽能直接减少抓取,但蜘蛛也就看不到頁面内容,同样看不到里面的 canonical 和 noindex。已经被收錄的地址不會因為屏蔽而消失。所以它更适合用在本来就不需要收錄、也不承担传递連結作用的地址上。

站点地图只放規范地址

站点地图是一份主動提交的名單。如果里面塞满了參數组合,等于自己提醒蜘蛛来抓。把它限定在真正希望被抓的 URL 上,才符合它原本的用途。

怎么確認收敛有没有生效

  • 看服務器日誌里带參數請求的占比,以及這些請求集中在哪些參數组合上。
  • 看抓取統計中「已發現但未编入索引」「重复網頁」的數量變化。
  • 看主体列表頁的抓取频率和响應時間有没有回升。
  • 抽样几條參數地址,確認返回的狀態碼和 canonical 是否符合预期。
參數治理不是一次性清理,而是要让内鏈、站点地图、頁面模板和服務器規則保持一致。只改一處,蜘蛛還是會從另一條路走進来。

最後提醒一点:收敛的目标是让抓取集中到有意义的地址上,而不是把所有带參數的 URL 都当成麻烦。判断标准始终是同一個——這個頁面有没有獨立的内容和搜尋價值。