搜尋抓取

站内搜尋頁與篩選參數:URL 發現的失控入口怎么收敛

站内搜尋頁和篩選參數是 URL 發現中最容易失控的两類入口,一個跟着用戶輸入生成地址,一個靠參數组合無限扩張。本文說明它們為什么带来抓取负担,以及從日誌排查、參數屏蔽、連結收敛到驗證检查的處理顺序,並提醒避免誤伤正常頁面。

搜尋抓取

站内搜尋頁與篩選參數:URL 發現的失控入口怎么收敛

很多站点的 URL 數量並不是由内容量决定的,而是由站内搜尋頁和篩選參數决定的。同一批商品或文章,经過參數组合之後可以衍生出成千上萬個可訪問地址,這些地址會顺着内鏈和頁面里的連結進入搜尋蜘蛛的發現队列。如果不對這類入口做约束,抓取资源會被大量低價值地址占用,真正需要被看到的頁面反而排到後面。

站内搜尋頁為什么容易變成地址工厂

站内搜尋结果的 URL 通常带有查询词,比如 /search?q=關鍵詞。用戶搜什么,頁面就生成什么地址,這些地址往往還會出現在“相關搜尋”“热门搜尋”或搜尋歷史的連結里。搜尋蜘蛛顺着這些連結走,就會把用戶輸入的随机词也当成需要抓取的 URL。

更麻烦的是,搜尋结果頁本身通常没有獨立價值:内容是從其他頁面聚合来的,換個词就是另一套组合。它既不是原创内容,又數量無限,属于典型的發現负担。

篩選參數:组合爆炸比單個搜尋頁更隐蔽

篩選類頁面常见形態是颜色、尺寸、價格区間、排序方式等參數叠加。两三個维度的组合就能产生几百個地址,如果再加上排序參數(?sort=price_asc)和分頁參數(?page=2),數量會繼續放大。

需要区分的是:一部分篩選组合确實有搜尋需求,比如“黑色 42 碼跑鞋”,這類頁面可以保留並让它參與發現;另一部分只是用戶随手点出来的中間狀態,没有獨立價值。

收敛的基本思路

  1. 先看日誌再動手。從服務器日誌里找出實际被频繁抓取的參數地址,按抓取次數排序,判断哪些是蜘蛛在反复试探、哪些是真正有流量的頁面。
  2. 区分可索引與不可索引。保留有搜尋需求的篩選组合,其余通過 robots.txt 屏蔽參數路径,或在頁面上加 noindex 标记。两者叠加使用更稳妥,因為 robots.txt 只阻止抓取,並不阻止地址留在索引里。
  3. 連結层面少给入口。篩選連結如果不是用戶必需,可以改成按钮交互或只在点击後加载,减少頁面上可直接跟随的地址數量。
  4. 規范參數寫法。统一參數顺序、去掉無意义的跟踪參數(如各種 utm 串、會话 ID),避免同一個篩選结果生成多個地址。
  5. 给分頁和排序一個固定出口。分頁地址尽量規整,排序參數只保留預設值,不必要的排序组合不值得單獨成為可抓取地址。

不要让收敛動作誤伤正常頁面

屏蔽參數时容易连带把正常頁面挡住,比如把問号之後的全部内容都禁掉,结果带參數的正文頁也進不来。建议按參數名精确匹配,而不是按符号一刀切。改動之後,用 robots.txt 測試工具和頁面抓取工具各驗證一次,確認目标頁面仍可抓取。

URL 發現的目标不是让蜘蛛看到更多地址,而是让它看到更值得看的地址。數量宽松的入口,往往換来的是抓取效率的下降。

服務器在這件事里的位置

參數地址多,抓取請求就會變密。如果服務器响應變慢,搜尋蜘蛛通常會降低抓取频率,正常頁面的發現和更新也會被拖慢。所以參數收敛不只是内容层面的事,也關系到服務器能不能稳住抓取节奏。日誌里如果出現大量同一路径不同參數的高频請求,就是该處理的信号。

一個可执行的检查顺序

  • 統計近一個月日誌中带參數的 URL 數量與占比。
  • 列出抓取最频繁的前 50 個參數地址,逐個判断是否有價值。
  • 确定保留清單與屏蔽清單,先小范围測試。
  • 調整頁面連結,减少通向無價值參數组合的入口。
  • 观察两周,確認抓取總量下降但目标頁面抓取次數没有减少。

參數收敛不會一次做完,站点改版、新篩選功能上线都可能重新带来一批地址。把這件事当成定期回看的例行工作,比一次性處理完更實际。