搜尋抓取

參數组合生出的 URL:蜘蛛會抓走多少份列表頁

列表頁加上排序、篩選、分頁和追踪參數後,會组合出大量地址,蜘蛛會把它們当成一個個獨立 URL 抓取,占掉本来可以留给内容頁的抓取額度。本文說明哪些參數最容易失控,以及用 robots.txt、canonical、内鏈口径和 Sitemap 收口的做法,並给出判断哪些參數頁值得保留的检查步骤。

搜尋抓取

參數组合生出的 URL:蜘蛛會抓走多少份列表頁

带參數的 URL 本身没有错,麻烦在于它會成倍出現。一個列表頁加上排序、篩選、分頁、来源追踪之後,可以组合出几十甚至上百個地址,而蜘蛛對每一個地址都會当成獨立 URL 来處理,消耗的抓取次數也跟着翻上去。

蜘蛛看到的是 URL,不是頁面逻辑

對服務器来说,/list?color=red 和 /list?color=blue 是两次不同的請求;對蜘蛛来说也是两個獨立地址。如果你用參數把同一批商品重新排列组合,蜘蛛會顺着内鏈或 Sitemap 一路展開,把這些组合逐個抓一遍。结果往往是:真正需要更新的詳情頁没被抓几次,组合出来的列表頁却占掉了大头。

哪些參數最容易让抓取量失控

  • 排序參數:?sort=price、?order=desc,同一批内容換個顺序就多一個地址。
  • 多條件篩選:?color=red&size=40&brand=x,條件越多,组合增長越快。
  • 分頁叠加篩選:篩選结果後面再带 page=2,地址數量又乘一层。
  • 追踪與来源參數:?from=home、utm_source 這類對内容没有影响,却會生成新地址。
  • 會话與临时參數:带 sessionid、時間戳的地址,每次抓到的寫法都不一样。

几種常见的收口方式

用 robots.txt 挡住

對確認没有收錄價值、纯粹由篩選组合出来的地址,可以用 Disallow 規則拦住。要注意 robots.txt 管的是抓取,不是收錄,已经進過索引的地址需要另外處理。

统一 canonical 與内鏈口径

把參數頁的 canonical 指回不带參數的規范版本,同时让站内連結尽量只用規范寫法。内鏈是蜘蛛最常走的路径,連結怎么寫,它就更可能怎么抓。

让參數頁可用,但不必處處可達

篩選结果可以由前端 JS 生成,或者通過提交、接口拉取,避免為每一種组合都生成一個能被直接抓取的静態地址。用戶照样能用,蜘蛛也不需要顺着連結全部展開。

Sitemap 里只放主干

Sitemap 是主動递出去的清單,把參數组合也寫進去,等于邀請蜘蛛逐個訪問。主干列表頁和重要詳情頁放進去即可。

怎么判断哪些參數頁值得保留

  1. 看服務器日誌或站長平台的抓取統計,找出被抓次數最多的一批參數地址。
  2. 確認這些地址有没有带来實际訪問或轉化,没有的话基本属于纯消耗。
  3. 看看是否有重要頁面因為抓取額度被占用而更新滞後。
  4. 定好規范地址口径,再决定是屏蔽、合並還是保留。
參數本身不是問题,無人管理的參數组合才是。把口径定下来,抓取路径才會更集中。

一個容易忽略的细节

屏蔽參數地址之後,要回头確認站内連結和 Sitemap 里没有繼續出現這些寫法,否則蜘蛛會在能發現却抓不了的狀態里反复试探。規則調整後观察一段時間的日誌,看抓取分布有没有向内容頁倾斜,再决定要不要繼續收紧。