搜尋抓取

URL 參數與篩選頁:蜘蛛的抓取被分流到了哪里

带參數的篩選頁、排序頁和分頁组合,常常在不知不觉中吃掉大部分抓取量。本文從日誌分组出發,說明如何判断哪些參數頁值得保留,如何用 canonical、robots 和模板层面的入口收敛来减少無效 URL,並提醒蜘蛛池引流时的落点選擇。

搜尋抓取

URL 參數與篩選頁:蜘蛛的抓取被分流到了哪里

很多站点的抓取量並不小,但真正有搜尋需求的頁面拿到的抓取次數却很少。把服務器日誌按 URL 形態分一下组,問题往往就露出来了:大量抓取落在带參數的篩選頁、排序頁和分頁组合上。這些頁面本身不一定有错,但它們會持續消耗蜘蛛的抓取額度,让核心頁面的發現和更新被拖慢。

參數頁為什么容易扩散

一個 200 條商品的列表頁,颜色、尺碼、價格区間、排序方式彼此相乘,理论上能生成几百上千個 URL。更麻烦的是這些連結常常互為入口:篩選頁之間互相連結,蜘蛛顺着点,很快就進入组合空間。再叠加分頁參數,深度還會繼續展開。

模板层面看,這類連結多數是硬编碼輸出的,蜘蛛每抓一次列表頁,就重新拿到一批參數連結。抓取量因此像滚雪球一样往上走,而詳情頁的抓取次數几乎没變。

先判断哪些參數頁有價值

  • 有獨立搜尋量的篩選组合,比如“品牌 + 型号”,通常值得保留,可以有自己的落地頁;
  • 纯排序參數(sort=price_asc)、會话類參數(sid、from)、纯展示參數(view=list)一般没有獨立價值;
  • 只有当某類參數頁被真實用戶從搜尋進入时,才說明它有资格被單獨抓取。

判断依據来自两處:搜尋後台的落地頁資料,以及服務器日誌里蜘蛛對這些 URL 的抓取频率和返回狀態。如果一批參數頁長期只被抓、几乎没有訪問,也没有外部連結支撑,那它多半只是在占用抓取額度。

收敛的几種做法

用 robots 還是用 canonical

完全屏蔽某類參數,用 robots.txt 的 Disallow 最直接,但要小心:屏蔽之後蜘蛛讀不到頁面上的 canonical 和 nofollow,原本已经建立的連結關系也會被切断传递。更稳妥的顺序是,先確認這些 URL 没有被外部引用,再决定屏蔽范围。對必须让蜘蛛讀到、但不希望被大量抓取的頁面,用 canonical 指向主版本更合适。

canonical 要指向真實頁面

排序、追踪參數指向無參主 URL,能让蜘蛛把抓取和權重集中過去。注意 canonical 要指向真實可訪問、内容一致且返回正常的頁面,不要指向 404 或者一個並不存在的“理想地址”。

從入口层减少出口

把篩選入口收進需要交互才触發的形式,比如点击後再請求資料,能明顯减少蜘蛛第一轮抓到的參數 URL 數量。這一步的優先級高于事後屏蔽,因為它從源头减少了 URL 的产生。

分頁參數要單獨對待

分頁不是篩選,不要一律屏蔽。常见做法是保留分頁 URL 可抓,但让分頁序列保持干净,避免“篩選 + 分頁”的笛卡尔积。同时確認分頁列表里的詳情連結能被抓到,否則蜘蛛翻到第五頁就断了通向詳情頁的路径,前面的抓取也跟着浪費。

蜘蛛池带来的流量怎么落

用蜘蛛池给站点引蜘蛛时,落点很關键。如果引来的蜘蛛被送到带一串參數的入口頁,它會顺着參數鏈走很遠,真正需要覆盖的頁面反而没被碰到。落点優先選干净的分類頁、栏目頁或最近的更新列表,让蜘蛛第一步就落在内鏈稳定、能通向詳情的頁面上。

核對清單

  1. 從日誌里按 URL 形態分组,統計各形態的抓取次數占比;
  2. 找出抓取多、無搜尋需求、無外鏈的參數頁;
  3. 检查頁面模板,看這些連結是硬编碼輸出還是可以收敛;
  4. 需要保留的加 canonical,確認無外鏈且無價值的再考虑 robots 屏蔽;
  5. 調整前後各观察一到两周,確認抓取量是轉移到了核心頁,而不是凭空消失。

參數治理不必一次做完。先處理抓取量最大的一两類參數,观察抓取分布的變化,再决定下一步。改動之後至少留一到两個蜘蛛重訪周期,再看資料是否朝预期方向移動。

一点提醒:參數頁收不收敛,要以日誌和搜尋資料為依據,不要凭“看起来像重复”就屏蔽。誤屏蔽造成的损失,通常比多抓一批參數頁更难恢复。