搜尋抓取

列表頁翻頁與篩選參數:蜘蛛從分頁連結里能走多遠

列表頁通常是蜘蛛發現詳情頁 URL 的主要出口,分頁連結的寫法和篩選參數的多寡,直接决定它能不能往里走。本文梳理分頁連結的几種常见形式、參數爆炸的成因與收敛思路,並给出一份列表頁层面的自检清單。

搜尋抓取

列表頁翻頁與篩選參數:蜘蛛從分頁連結里能走多遠

列表頁是很多站点最主要的 URL 出口。商品列表、文章归档、标簽聚合頁,蜘蛛往往先到這里,再顺着一條條連結走進詳情頁。如果分頁和篩選的寫法有問题,蜘蛛要么走不深,要么被大量看似不同、實則重复的地址拖住。

蜘蛛在列表頁里是怎么往前走的

蜘蛛進入第一頁之後,能看到的連結只有目前頁面里真實存在的那几條。要走到第二頁,它必须先在頁面中找到指向第二頁的連結。不少列表頁的“下一頁”是脚本拼出来的,或者按钮本身不带 href,蜘蛛点不動,抓取就停在第一頁。

這不是收錄問题,而是通路問题:連結存在與否,决定了蜘蛛有没有路可以走。

分頁連結的几種常见寫法

  • 静態路径分頁:如 /list/page/2/,路径可讀、可被單獨引用,蜘蛛按序推進比較顺畅。
  • 參數分頁:如 /list?page=2,能抓,但容易和其他篩選參數混在一起,产生组合。
  • 按钮加脚本:只有点击事件、没有 href,蜘蛛基本看不到下一跳。
  • 無限滚動:视觉上连續,但地址栏不變,除非同时提供可抓取的分頁連結兜底。

不必把所有形式都改成静態,但至少要保證第二頁、第三頁有真實可点的連結存在,让蜘蛛有路可走。

篩選參數带来的 URL 爆炸

排序、價格区間、颜色、尺碼、發货地……每加一個可選條件,地址數量就成倍增長。蜘蛛會顺着這些组合一路走下去,结果是大量内容几乎一致的頁面被反复抓取,真正的新詳情頁反而排到後面。

判断标准很简單:這個參數组合出来的頁面,用戶會不會單獨分享、收藏或搜尋?如果不會,它大概率只是同一份列表的另一種视图。

把參數收敛起来的三件事

  1. 用 robots.txt 屏蔽明顯無價值的组合參數,但要记得屏蔽抓取不等于屏蔽索引,配合 noindex 更稳妥。
  2. 给篩選頁加上 canonical 指向無參數版本,或者让這類頁面直接返回 noindex。
  3. 分頁連結保持纯序列,不要掺杂排序、會话 ID、追踪參數,避免同一頁出現多個地址。

翻頁請求同样會消耗服務器

蜘蛛翻頁时會连續發出請求,速度既取决于它自己的判断,也取决于你的响應。响應慢、超时多,蜘蛛會主動降低抓取频率,列表深處的新 URL 被發現的時間就被拉長。列表頁往往是動態查询,資料库压力大,给列表頁加缓存、压缩 HTML、缩短首字节時間,收益有时比改連結更直接。

一份简單的自检清單

  • 列表第一頁能否用普通連結的方式找到第二頁?
  • 翻到第五頁、第十頁时,是否還能繼續往前翻?
  • 分頁地址是否只有一種寫法,没有重复參數?
  • 篩選後的頁面是否有 canonical 或 noindex 處理?
  • Sitemap 里提交的詳情頁 URL,在列表頁里是否也能走到?
  • 列表頁的响應時間是否明顯慢于詳情頁?

分頁和參數並不是新鲜话题,但它們决定了蜘蛛在站点里能走多深。把列表頁的連結寫清楚、把重复參數收敛掉、把响應速度提上来,URL 發現的效率通常會更稳定一些。剩下的,交给時間去观察抓取日誌里的變化。