站点运营

站点运营:列表頁與翻頁的抓取治理,別让分頁把蜘蛛带進死胡同

列表頁是網站里最主要的 URL 發現入口,但分頁處理不当,會让蜘蛛在深层頁碼里空轉。本文梳理常见翻頁寫法、可抓連結的放置方式,以及查看全部、無限滚動、归档頁的取舍,並给出一份可以照着检查的清單。

站点运营

站点运营:列表頁與翻頁的抓取治理,別让分頁把蜘蛛带進死胡同

站点里的列表頁往往承担着最重的 URL 發現职责:文章列表、商品分類、标簽聚合、站内搜尋,几乎所有詳情頁都是靠它們被蜘蛛第一次看见的。也正因為如此,分頁處理得粗糙时,蜘蛛會在列表頁之間来回消耗配額,真正的新頁面反而排不進队列。

先看清自己用的是哪種翻頁寫法

  • 路径式:/list/page/2/ 這種形式。可抓、可缓存、可單獨分享,是相對稳妥的做法。
  • 參數式:/list?page=2。同样能抓,但要和排序、篩選、跟踪參數区分開,避免组合爆炸。
  • 纯脚本翻頁:点击按钮後由 JavaScript 追加内容,地址栏不變。蜘蛛如果拿不到渲染结果,就只能看到第一頁。
  • 無限滚動:本质上和上一種相同,只是把按钮換成了滚動事件。

给蜘蛛留一條能走的路

翻頁不必做得漂亮,但連結要真實存在于 HTML 里。下面几條是底线:

  1. 分頁連結用 a 标簽的 href 輸出,而不是绑定点击事件的 div 或 span。
  2. 第一頁和後續頁互鏈,不要出現只能從第一頁跳到第 N 頁、却回不来的情况。
  3. 翻頁控件里的數字只做辅助,真正要保證的是“上一頁 / 下一頁”這两個連結始终存在。
  4. 地址栏里的 URL 與連結 href 保持一致,避免用戶看到 A 地址、蜘蛛拿到 B 地址。

深层頁碼要不要全部放開

一個分類下有五百頁,全部让蜘蛛抓完通常並不划算:靠後的頁碼内容重复度高,能带来的新 URL 也有限。常见做法是给翻頁设一個深度,比如前五到十頁正常可抓,更深的頁碼不輸出可抓連結,改為引導用戶用時間归档或篩選去找。這属于取舍,不是規定,判断依據是:深层頁碼上還有多少没被收錄過的詳情頁。如果新内容都集中在前面几頁,就没有必要把尾巴全部展開。

查看全部、排序與篩選

“查看全部”這類頁面如果一次列出几百條連結,對新站的抓取配額是不小的压力,但它的 URL 發現效率又确實很高。折中方式是把“查看全部”限制在條目較少的分類,或者改成按時間、按首字母切分的归档頁,让每個頁面只装几十條連結。

排序和篩選參數建议單獨治理:只保留預設排序可抓,其余组合通過 robots.txt 或頁面上的連結形態控制,別让排序參數、标簽參數、来源參數互相相乘。

無限滚動的替代入口

如果产品坚持無限滚動,至少要补一個分頁版本:在列表底部輸出“下一頁”的真實連結,或提供一個按頁碼訪問的地址,並在 sitemap 里把重要的列表頁列出来。對蜘蛛来说,有人工入口的地址,比需要交互才能出現的地址可靠得多

一份可以照着做的检查清單

  • 列表頁首屏 HTML 里,至少能看到一條指向下一頁的連結。
  • 翻頁地址的 canonical 指向自身,而不是全部指向第一頁。
  • 分頁頁面的标题和描述有区分,不是整站複製同一份。
  • 空列表返回 404 或明确的空狀態,而不是内容為空的 200。
  • 篩選、排序後的地址不進入 sitemap。
  • 列表頁上的詳情連結是直鏈,不经過跳轉中轉。
分頁只是列表頁的附属结构,真正要保證的是:新内容發布後,從首頁出發走两三次点击就能被連結到。翻頁做得再規范,如果新條目只出現在深层頁碼里,同样容易被漏掉。