搜尋抓取

搜尋蜘蛛抓取:URL 參數组合扩散與篩選排序頁的抓取收敛核對

篩選、排序、會话與追踪參數會让同一批内容派生出大量 URL,蜘蛛沿内鏈逐一訪問时容易把抓取額度耗在相似頁面上。本文给出從日誌抽样、參數分類到内鏈指向與規范声明的核對顺序,帮助判断哪些參數頁需要保留發現入口,哪些應当收敛,並說明各類收敛手段的副作用。

搜尋抓取

搜尋蜘蛛抓取:URL 參數组合扩散與篩選排序頁的抓取收敛核對

很多站点的 URL 數量增長並不是因為内容變多,而是因為同一批内容被參數拆成了多個版本。列表頁加上篩選、排序、分頁、视图切換,再叠加會话 ID 或渠道追踪參數,一個分類可能派生几百個地址。蜘蛛沿内鏈爬行时無法判断這些地址是否代表不同内容,只能逐個訪問,抓取額度就這样被相似頁面摊薄。

參數扩散通常從哪几個口子進来

  • 篩選與排序:颜色、尺碼、價格升序這類條件组合,條件越多组合越多。
  • 分頁與视图:分頁參數與列表视图參數同时出現,形成二维矩阵。
  • 會话與追踪:會话 ID、渠道来源、外部跳轉标记等,同一個頁面被反复生成新地址。
  • 站内搜尋结果頁:關鍵詞被外部連結或爬虫试探地址带入。
  • 内鏈本身:模板里的按價格排序、查看全部等連結直接輸出带參地址,等于主動把參數地址递给蜘蛛。

先做分類,再决定收敛方式

不是所有參數頁都要清理。判断标准可以看两点:這個地址是否有稳定的检索需求,以及它是否提供了不重复的内容。

建议保留發現入口的參數頁

  • 有明确检索意图、且頁面正文确實随參數變化,例如品牌篩選後展示不同的商品集合。
  • 分頁序列,它承担着把深层内容暴露给蜘蛛的作用。

建议收敛的參數頁

  • 纯排序、纯视图切換,輸出内容與預設顺序基本一致。
  • 會话 ID、追踪參數、站内搜尋關鍵詞。
  • 多條件篩選的自由组合,尤其是條件數量超過两三個的。

核對顺序:從日誌到内鏈

  1. 在訪問日誌里按路径統計,筛出带問号的請求,按參數名分组,看每個參數名對應的 URL 數量級。
  2. 對比被訪問的參數地址數量與實际产生点击的地址數量,差距大的參數優先處理。
  3. 检查模板輸出,確認列表頁、面包屑、相關推荐等位置是否生成了带參連結。
  4. 检查 Sitemap 是否把參數地址也提交進去,提交了就要同步調整。
  5. 確認站内跳轉與分頁連結在首屏 HTML 中可被直接讀到,不依赖前端渲染後追加。

收敛手段與各自的副作用

canonical 指向規范地址

适合同一内容多參數的情况。注意 canonical 只在頁面被訪問後才生效,蜘蛛已经訪問過的參數地址仍會消耗一次抓取;如果參數地址數量极大,單靠 canonical 收敛偏慢。

robots.txt 屏蔽特定參數

對组合爆炸的參數比較有效,但要清楚被屏蔽的地址不會被抓取,頁面上的連結也不會被繼續跟踪。如果某個參數頁既被屏蔽又是唯一入口,深一层内容可能失去發現路径。建议只屏蔽明确的會话、追踪與排序類參數,並避免屏蔽分頁。

内鏈统一指向無參地址

這是最省事的一步。預設排序、預設视图、預設篩選狀態的連結都輸出無參形式,把带參地址留给用戶点击後由前端生成。這样蜘蛛看到的連結集合會明顯收窄。

把篩選结果放到交互层

如果篩選结果依赖前端渲染,要確認首屏 HTML 里仍有可抓取的分頁或分類入口,否則會變成入口缺失的另一類問题。

參數收敛的目标不是让蜘蛛一個參數頁都不訪問,而是让它把時間花在真正有差异的地址上。收敛前後都可以用日誌里的參數請求占比做對比,看變化是否符合预期。

复查时看什么

  • 參數請求在總抓取中的占比是否下降,下降的是不是目标參數。
  • 分頁與分類入口的抓取是否保持稳定,没有因屏蔽規則被誤伤。
  • Sitemap 中是否還残留參數地址。
  • 被保留的參數頁是否仍能正常返回内容,没有因為規則調整返回 403 或空壳頁。

參數治理没有一次到位的做法,站点结构、篩選组件和运营活動都會不断产生新參數。把參數名登记成清單,新增功能上线前先確認它會不會生成新的 URL 维度,比事後清理更省力。