搜尋抓取

列表頁分頁的抓取路径:蜘蛛怎样從第一頁走到最後一頁

列表頁是蜘蛛從栏目走向詳情頁的中轉站,分頁連結的寫法决定了它能不能繼續往下走。本文從可抓連結、canonical 誤用、分頁深度、無限滚動、參數组合與服務器响應几個角度,梳理分頁抓取路径中常见的問题,並给出一份上线前後的检查清單。

搜尋抓取

列表頁分頁的抓取路径:蜘蛛怎样從第一頁走到最後一頁

在站点的抓取路径里,列表頁往往承担中轉站的角色。首頁或栏目頁把蜘蛛送進列表,列表再把它分發给詳情頁。問题在于,列表通常不會只有一頁,分頁連結的寫法直接决定了蜘蛛能不能繼續往下走,以及能走多遠。

分頁連結要真的能被跟着走

很多站点把下一頁做成按钮,用 JS 動態拼接 URL,或者只在点击时發起請求。视觉上没問题,但蜘蛛拿到的 HTML 里可能只有一個空容器。想让分頁進入抓取路径,最简單的方式是保留可点击的 a 标簽,href 指向真實 URL。即使同时用 JS 增强,鼠标点击與蜘蛛跟進也不冲突。

常见寫法有 /list?page=2、/list/page/2/、/list/2/ 等,都可以,關键是全站保持一致,不要让同一份内容在多種形態之間来回跳。如果分頁 URL 里混入會话 ID 或時間戳,每次抓到都像新地址,反而會让蜘蛛反复走同一段路。

rel=next/prev 與 canonical 的常见誤用

rel=next/prev 曾经被用来标记分頁序列,後来主流搜尋引擎不再把它当作强信号,但它本身不影响連結可抓。真正容易出問题的是 canonical:有人為了集中權重,把所有分頁的 canonical 都指向第一頁,這會让蜘蛛倾向于認為後續頁只是第一頁的重复版本,抓取價值降低。更稳妥的做法是让每個分頁自指 canonical,或者至少不要强行指向第一頁。

如果分頁内容确實與第一頁高度重复,可以考虑用合理的标题與描述做出区分,而不是靠 canonical 掩盖。分頁的每一頁都應该有自己的位置,而不是被当作第一頁的影子。

往下走多遠:分頁深度與抓取预算

分頁是线性延伸的路径:第一頁有第二頁連結,第二頁有第三頁連結。路径本身不复杂,但頁數一多,蜘蛛要走的步數會明顯增加。如果每頁還挂着篩選、排序、時間范围等參數,連結组合會快速膨胀,把本来有限的時間消耗在相似列表上。

常见的收敛方法:

  • 限制分頁层數,超過一定頁數後改用归档或按時間切分;
  • 過滤無意义的排序參數,只保留有獨立價值的入口;
  • 篩選结果是否产出可抓連結,按业務價值决定,必要时用 noindex;
  • 列表頁不要輸出大量重复的推荐位連結,减少路径分岔。

無限滚動與加载更多怎么留後路

無限滚動對用戶体驗友好,但對 URL 發現不友好。如果只靠滚動触發接口,蜘蛛拿不到後續 URL。比較實用的折中方案是:

  • 第一屏仍然返回可抓的分頁連結,作為兜底;
  • 滚動加载的接口返回真實詳情頁 URL,並确保這些 URL 能從別處被發現;
  • 加载更多按钮最好是一個带 href 的連結,JS 只做拦截增强;
  • 移動端與桌面端保持同一套 URL,不要額外生成一套僅供爬虫使用的地址。

這些做法不會让蜘蛛一次抓完所有内容,但能让它有一個稳定的入口,逐步把新連結纳入队列。

服務器响應與分頁抓取的节奏

分頁請求往往比詳情頁更密集,因為蜘蛛需要在較短時間内连續取多個頁面。如果服務器响應慢,或者每頁都触發复杂的資料库查询,抓取队列會越排越長,蜘蛛可能降低對本站的訪問频率。给列表頁做缓存、控制每頁輸出條數、避免一次查询拉取全部資料,都是比較直接的做法。稳定性比偶尔的一次快速响應更重要。

上线前後的检查清單

  • 分頁連結是否為可抓的 a 标簽,href 指向真實 URL;
  • 分頁 URL 是否稳定,不随會话或時間戳變化;
  • canonical 是否誤指第一頁;
  • 是否存在參數组合導致的無限路径;
  • 列表頁响應時間是否稳定,是否有缓存;
  • 分頁内容是否與第一頁有足够差异。

分頁看起来只是列表的延伸,但它决定了蜘蛛能走多深、走多快。把分頁連結做成蜘蛛能理解、能连續跟進的路径,通常比事後調整更容易。

抓取路径不是越深越好,而是每一步都有明确的下一站。