搜尋抓取

搜尋蜘蛛抓取:篩選參數组合造成的 URL 膨胀與收敛

站内排序、篩選、追踪參數一旦自由组合,同一批内容會衍生出大量相似 URL,抓取队列容易被重复地址占满。本文整理判断入口膨胀的日誌口径、參數分類思路,以及内鏈、canonical、robots、Sitemap 的收敛做法與驗證复盘指标。

搜尋抓取

搜尋蜘蛛抓取:篩選參數组合造成的 URL 膨胀與收敛

站内检索、排序、分頁、篩選這些交互,很容易在 URL 上留下參數痕迹。当參數可以自由组合时,同一個内容集合會衍生出成百上千個地址。抓取工具顺着内鏈一路走下去,抓取队列就被這些“看似不同、實际雷同”的地址占满,真正需要更新的詳情頁反而排在後面。下面按判断、分類、收敛、驗證四個环节整理。

一、先判断:參數 URL 是否真的吃掉了抓取量

不要凭感觉收敛參數,先用日誌说话。可以按下面几個口径做一次統計:

  • 含問号的請求占全部抓取請求的比例,以及這些地址去重後的獨立 URL 數量;
  • 這些請求的响應碼分布,有多少是 200、多少是重定向或错誤;
  • 參數頁與對應規范頁的正文指纹是否高度一致,重复程度有多高;
  • 參數請求的平均响應時間和响應体大小,是否明顯低于或高于規范頁。

如果參數地址占到抓取量的三成以上,其中大部分返回 200 且正文與規范頁几乎一致,基本可以判断入口存在膨胀。反之,如果參數請求很少或大多返回错誤,優先級就要往後放。

二、參數分類:哪些值得放行,哪些應挡在门外

通常值得保留的參數

  • 决定内容本身的标识參數,例如文章 ID、商品 ID、分類路径;
  • 語言或地区切換參數,且返回的确實是不同語言、不同地区的實质内容;
  • 分頁所需的頁碼參數,因為分頁是列表内容向下發現的通道。

通常應屏蔽或收敛的參數

  • 排序、视图切換、每頁條數一類展示层參數,如 sort、order、view、pageSize;
  • 會话與追踪參數,如會话标识、utm 系列、广告点击标识;
  • 時間戳、随机數、缓存绕過類參數;
  • 多维篩選的自由组合,例如“品牌+價格区間+颜色+尺寸”同时出現。

三、收敛做法

  1. robots.txt 按參數模式屏蔽。用規則匹配參數前缀,但要注意同一參數名可能也用在内容頁上。建议先屏蔽排查,观察日誌中该模式的請求是否真的下降,再决定是否扩大范围。
  2. 内鏈只指向規范形式。列表頁預設進入时不带參數,篩選或排序在用戶点击後再生成,並改用按钮或脚本交互,避免這些组合被当作可抓取連結反复發現。
  3. canonical 與站内入口保持一致。參數頁的規范地址指向無參數的版本,同时站内所有連結也统一指向该版本。若 canonical 指向 A、内鏈指向 B,两個信号會互相抵消。
  4. Sitemap 只提交規范 URL。不要把篩選组合地址寫進站点地图,否則等于一邊屏蔽一邊主動投递。
  5. 分頁與篩選分開處理。頁碼參數属于發現通道,不宜一刀切屏蔽;篩選參數才是膨胀的主要来源,两者要区別對待。
  6. 保留少量有價值的篩選頁。若某些组合确實有獨立搜尋需求,可以挑選少量高價值组合纳入可抓取范围,並确保标题與正文有實质差异,而不是模板套壳。

四、服務器與抓取预算的配合

參數膨胀往往伴随大量重复的動態查询,给資料库带来額外压力。收敛之後,可以顺手观察服務器负载峰值與 5xx 比例是否下降,但要注意別把整体限速調得過紧,否則規范頁的响應變慢,同样會拖累抓取。

如果站点本身存在抓取时段集中的問题,參數收敛的效果會被掩盖。建议在收敛前後各取一段相同長度的日誌做對比,而不是看單日資料。

五、驗證與复盘

  • 參數請求在總抓取量中的占比是否下降,規范頁占比是否上升;
  • 是否存在誤伤:屏蔽之後,带必需參數的正常内容頁是否仍能被抓取;
  • 索引與收錄结构的變化需要按周甚至按月观察,短周期波動不足以判断成败;
  • 结合搜尋平台後台的抓取統計與覆盖率报告,交叉核對日誌结论。

常见誤区

  • 只改 robots 不改内鏈,抓取工具仍會從列表頁反复發現這些地址;
  • canonical 與内鏈指向不一致,等于给出矛盾信号;
  • 把所有參數一刀切屏蔽,连带把内容必需的參數也挡掉。
參數收敛的目标不是“少给地址”,而是让抓取工具把有限的時間花在真正不同的内容上。屏蔽之前先確認哪些组合有獨立價值,誤伤的入口恢复起来往往比预想更慢。