搜尋抓取

URL 參數與篩選導航:蜘蛛會在哪些组合前停下

篩選參數會成倍放大 URL 空間,蜘蛛不會全部抓完,结果往往是低價值參數頁占用抓取资源,真正需要更新的頁面排队更久。本文從參數组合、蜘蛛的典型反應、保留與收掉的标准,以及 robots、canonical、nofollow 的副作用出發,给出可落地的處理顺序。

搜尋抓取

URL 參數與篩選導航:蜘蛛會在哪些组合前停下

电商、房产、招聘這類站点,篩選器几乎是标配。颜色、尺寸、品牌、價格区間、排序方式、每頁條數、目前頁碼,每一項都可能變成一個 URL 參數。用戶点两下觉得方便,蜘蛛看到的却是一張不断分叉的地图。

參數為什么容易把 URL 空間撑大

單個參數並不可怕,麻烦的是组合。假设一個列表頁有 5 個篩選维度,每個维度 10 個可選值,理论组合就是 10 的 5 次方。再叠加排序和分頁,數量級還會繼續放大。更隐蔽的是,有些參數並不改變頁面主体内容,比如排序方式、每頁條數、来源追踪,但它們生成的 URL 各不相同。

蜘蛛在發現這些連結时,通常會先抓一部分。它不會因為連結存在就一定抓完,抓取资源始终有限。结果是:一部分參數 URL 被反复抓取,返回的却是和主列表几乎一样的内容;而真正需要更新的詳情頁、新上架頁面,反而排队更久。

蜘蛛面對參數 URL 时的几種典型反應

  • 把參數顺序不同、取值不同的 URL 当作不同地址,分別進入抓取队列。
  • 對内容高度相似的參數頁,只選其中一部分作為代表,其余可能被忽略或降權處理。
  • 当參數组合看起来像無限生成时,蜘蛛可能降低對该目錄的抓取频率,连主列表頁也受影响。
  • 带會话 ID 或時間戳的連結,每次訪問都产生新 URL,几乎不可能被完整抓取。

這些反應不一定是惩罚,更多是资源分配的自然结果。但對站点来说,效果類似:抓取预算被低價值 URL 占住。

哪些參數值得保留,哪些應该收掉

判断标准可以简單一些:這個參數 URL 有没有獨立的内容價值,有没有用戶會直接搜尋並使用它。

  • 倾向保留:有明确搜尋需求的篩選组合,例如品牌加品類、城市加区域;這些頁面有獨立标题、描述和稳定内鏈。
  • 倾向收掉:排序參數、每頁條數、视图切換、打印版本、来源追踪、會话标识、無意义的空參數。
  • 需要观察:價格区間、评分等组合,數量可控且有搜尋量时可以保留一部分。

常见處理方式與它們的副作用

robots.txt 屏蔽參數

直接屏蔽带參數的目錄,能减少抓取,但也會让蜘蛛無法發現该目錄下可能存在的有價值頁面。屏蔽的是抓取,不是索引,已被外部連結指向的 URL 仍可能出現在结果里,只是内容抓不到。

canonical 指向無參數版本

這是常见做法,但 canonical 是提示而非指令。如果參數頁内容确實不同,或者站内大量連結都指向參數頁,效果會打折扣。

對篩選連結加 nofollow

能减少爬虫顺着篩選繼續走的路径,但也可能让蜘蛛错過藏在篩選下的新頁面。更适合用在纯排序、纯视图切換這類連結上。

篩選结果改用 JS 或接口加载

蜘蛛不一定會执行所有交互,拿不到連結也就不會進入抓取队列。對需要被發現的頁面,最好仍保留可抓取的静態連結入口。

從日誌和搜尋控制台看是否该干预

不要凭感觉判断。先看服務器日誌里參數 URL 的占比、狀態碼和响應内容。如果大量參數 URL 返回 200 但内容重复,或者同一组參數被反复抓取,就值得處理。再看搜尋控制台的抓取統計和頁面分组,观察參數頁是否占用了大量抓取請求。

處理顺序建议從影响最大的參數開始:先解决會话 ID、追踪參數這類每次變化的值,再處理排序和视图切換,最後才考虑是否给篩選组合做静態化。

一個務實的原則

重要内容尽量有一個稳定、無參數、可被内鏈指向的地址。參數用来增强体驗,而不是成為唯一入口。URL 空間不需要一次清干净,但要让蜘蛛把有限的抓取次數花在會更新、有人搜尋的頁面上。

參數不是越多越好,也不是一律屏蔽。關键是让每個被抓取的 URL 都有存在的理由。