搜尋抓取

分面導航的 URL 發現:篩選與排序參數该不该让搜尋蜘蛛走一遍

电商、房产、招聘類站点常因篩選與排序參數生成大量组合地址。本文從内容差异、真實需求、服務器负载三個角度判断哪些參數頁值得被發現,並给出 robots.txt、canonical、内鏈與站点地图的配合做法,把有限的抓取額度留给有意义的頁面。

搜尋抓取

分面導航的 URL 發現:篩選與排序參數该不该让搜尋蜘蛛走一遍

做电商、房产、招聘或本地服務類的站点,运营一段時間後常會遇到同一個問题:一個分類列表頁,加上品牌、價格区間、颜色、排序方式等几個篩選條件,很快就能组合出几百上千個带參數的地址。這些地址算不算“入口”,搜尋蜘蛛要不要挨個走過去,是 URL 發現环节里最容易被忽略的一段。

參數是怎么把 URL 數量放大的

组合放大的道理很简單:每增加一個可篩選维度,地址數量就會成倍上涨。常见的来源包括:

  • 品牌 × 價格区間 × 排序方式 × 分頁,四层叠加就是一串長尾;
  • 同一组篩選條件換個參數顺序、再加一個跟踪參數,又是新的地址;
  • 篩選後没有任何结果,頁面依然返回 200 狀態碼。

只要頁面上有可点击的連結指向這些组合,它們就會被搜尋蜘蛛顺着發現。發現之後值不值得抓取、抓取之後值不值得索引,是後面两個獨立的問题。

先判断:這些參數頁有没有獨立價值

内容是否真的不同

服務端渲染、篩選後 HTML 里商品或房源确實發生變化的,才算有差异;如果篩選完全靠前端完成,返回给搜尋蜘蛛的 HTML 與無參數版本一模一样,那么這類地址在 URL 發現层面几乎没有意义,只是徒增抓取负担。

有没有真實的搜尋需求

可以结合站内搜尋词、外部是否有連結指向该组合、服務器日誌里參數地址的實际訪問量来判断。有人搜、有外鏈、有轉化的组合,才值得保留成可發現的入口。

是否只是同一批结果的排序

“按價格排序”“按销量排序”通常不产生新内容,属于典型可以收口的地址類型。

让入口收口的几種做法

  • robots.txt 屏蔽:适合明确不想被抓的目錄,但要记住,Disallow 只阻止抓取,並不等于阻止 URL 被外部連結带入發現环节。它常常只是“抓到了也拿不到内容”,不能当作唯一手段。
  • canonical 指向無參數版本:告诉搜尋引擎哪個才是主地址,减少重复入口的分散。
  • 内鏈只保留少數维度:把真正有價值的维度做成静態路径,例如 /phone/apple/,其余组合交给頁面内的篩選控件,不生成可抓取的連結。
  • 排序、视图切換用交互完成:尽量不产生新的可抓地址,同时也要清楚,JS 渲染出来的連結是否能被走到,取决于搜尋引擎的渲染能力,不宜完全依赖。
  • Sitemap 只放精選:把少數高價值參數頁寫進站点地图,其余靠站点结构自然消化。

服務器侧同样會影响發現质量

參數頁大多是即时查询,响應偏慢。搜尋蜘蛛的抓取額度有限,慢响應會拖長每次抓取的時間,等于變相挤压了其他頁面的發現机會。给常用的參數组合做缓存、限制翻頁深度上限、無结果时返回 404 或 410 而不是一個空壳 200,都能让抓取节奏更干净。

上线後的检查顺序

  1. 抽样對比參數頁與無參數頁返回的 HTML,確認是否存在真實差异;
  2. 拉一段服務器日誌,看參數地址在總抓取量里占多大比例;
  3. 核對 robots.txt、canonical、内鏈三處規則是否互相矛盾;
  4. 观察抓取高峰时段服務器响應是否明顯變慢。
URL 發現的關键,不是让搜尋蜘蛛看到更多地址,而是让值得被看到的地址更容易被走到。