搜尋抓取

參數化 URL 與抓取路径:篩選、排序連結會把蜘蛛带多遠

站内篩選、排序和分頁連結會生成大量带參數的 URL,蜘蛛發現速度快、數量多,容易把抓取资源耗在内容相近的頁面上。本文梳理這些地址的發現路径、蜘蛛的常见反應,以及固定規范版本、控制可抓维度、調整 Sitemap 與分頁等處理思路,並說明如何用抓取日誌驗證處理效果。

搜尋抓取

參數化 URL 與抓取路径:篩選、排序連結會把蜘蛛带多遠

很多站点的抓取問题不是出在首頁或栏目頁,而是出在篩選、排序、分頁這些带參數的連結上。运营一上线篩選功能,蜘蛛很快就能顺着這些連結發現几十上百個變体地址,抓取日誌里的 URL 數量在几天内翻倍。這些地址大多内容相近,却各自占用一次抓取机會。

參數 URL 是怎么被蜘蛛看到的

常见入口有三類。一是頁面上的篩選連結本身就是可点击的 a 标簽,蜘蛛顺着 DOM 就能拿到;二是站点地图或分頁聚合頁里列出了带參數的地址;三是内容由脚本渲染,脚本請求接口後生成連結,蜘蛛在渲染阶段同样可能拿到。三類入口叠加,參數 URL 的發現速度往往比新文章還快。

组合爆炸:几條參數就能撑出上千個地址

假设一個列表頁有 5 個篩選項、3 種排序、每頁 20 條共 30 頁,理论上可以拼出 5×3×30 的地址组合。實际數量往往更多,因為參數顺序不同又被当成不同 URL。蜘蛛會把這些地址一個一個放進待抓队列,站点的抓取资源被大量消耗在内容几乎一样的頁面上,真正需要更新的詳情頁反而排在後面。

蜘蛛對這類地址的常见反應

  • 首次抓取大多返回 200,内容與主列表高度相似;
  • 重复抓取多次後,部分地址會被降低抓取频次;
  • 如果參數地址返回空结果頁,容易被当成低质頁面;
  • 如果篩選頁触發大量資料库查询,响應變慢,抓取超时會增多。

比較稳妥的處理方式

  1. 固定一個規范版本。只让一组參數组合可以被抓取,其余组合用 rel=canonical 指回主列表,或在服務端统一重定向。
  2. 控制可抓取的维度。把篩選维度分成有搜尋需求和纯浏览两類,只放行前者,後者用 robots.txt 或頁面級 noindex 收住。
  3. 排序參數不參與抓取。排序通常對用戶有用,對蜘蛛意义不大,可以在連結上加 nofollow,或让排序地址指向不带排序參數的規范地址。
  4. Sitemap 只放規范 URL。不要把带參數的地址寫進站点地图,否則等于主動给蜘蛛指路。
  5. 分頁保持可抓取,但限制深度。前几頁放行,後面的分頁用“查看更多”或按需加载,避免無限翻頁。

顺带影响:抓取压力會传導到服務器

參數頁通常不走缓存,每次請求都要查一次資料库或做一次聚合計算。当蜘蛛在短時間内集中抓取這類地址,服務器负载上升,正常用戶的訪問速度也會受影响。把參數地址收敛掉,既省抓取预算,也减轻服務器在抓取高峰期的压力。

怎么驗證處理有没有效果

處理之後,重点看抓取日誌里參數 URL 的占比是否下降、狀態碼分布是否更集中、詳情頁的抓取次數是否回升。如果日誌里參數地址仍然很多,需要回头检查内鏈、站点地图和脚本渲染三條路径,找出還在持續輸出這些連結的位置。

參數 URL 不是不能存在,而是要有邊界。把有限的抓取机會留给真正有内容差异的地址,是站点运营里成本較低、见效相對可控的一步。