搜尋抓取

分頁序列與 URL 發現:列表頁翻頁入口怎样设計才不影响抓取

分頁是很多站点把深頁送入抓取队列的主要通道。本文從連結形式、參數寫法、無限滚動和 Sitemap 配合几個角度,說明怎样让翻頁入口更容易被搜尋蜘蛛跟随,同时避免重复發現和路径過深。

搜尋抓取

分頁序列與 URL 發現:列表頁翻頁入口怎样设計才不影响抓取

很多站点的末級頁面並不是從首頁直接連結過去的,而是沿着“首頁 → 栏目頁 → 列表頁第 1 頁 → 第 2 頁 → 詳情頁”這样的路径被逐步發現。分頁序列因此不只是浏览体驗的一部分,它也承担着把深頁送入抓取队列的作用。如果翻頁入口在源碼里不可跟随,或者路径设計得让蜘蛛容易迷路,URL 發現效率就會下降。

可抓取的翻頁連結長什么样

最基础的一点:翻頁入口必须以标准連結形式出現在服務器返回的 HTML 里。也就是说,蜘蛛在不执行 JavaScript 的情况下,也能從源碼中讀到指向下一頁的地址。常见的失誤是把翻頁做成纯按钮,点击後由 JS 拼接參數並請求資料,源碼里没有任何可跟随的地址。這样蜘蛛走完第一頁後,後面的頁面很难被自動發現。

可以保留按钮的交互,但同时在 HTML 中放一個普通的下一頁連結作為兜底。例如列表底部出現“下一頁”文字連結,或者用分頁條輸出第 1、2、3 頁的連結。只要連結是静態可讀的,蜘蛛就有路径可走。

分頁參數的两種寫法

分頁通常有两種 URL 形態:一是查询參數,如 ?page=2;二是路径形式,如 /list/page/2/。两者都能被蜘蛛抓取,但要注意參數寫法带来的邊界問题。

  • 查询參數可能因為排序、篩選、會话等附加參數组合出大量變体,導致同一分頁被重复發現。建议把無意义的參數去掉,只保留分頁必需的那個。
  • 路径形式更干净,但改動时要做 301 跳轉,避免新舊地址同时可訪問。
  • 無论哪種形式,都要保證第 1 頁有稳定入口,並且從第 1 頁能一路鏈到最後一頁,而不是只顯示“上一頁、下一頁”。

無限滚動與“加载更多”怎么處理

無限滚動和点击“加载更多”對用戶友好,但預設狀態下不會产生新的可抓取 URL。常见做法是在滚動加载的同时,给每個分頁生成一個静態地址,並在頁面源碼中保留分頁連結。比如滚動到第 2 頁时,地址栏可以更新為 ?page=2,同时 HTML 中依然有指向第 3 頁的連結。這样用戶不被打断,蜘蛛也有路可循。

關键不是禁止動態加载,而是不要让動態加载成為唯一的發現通道。

分頁與 Sitemap 的配合

Sitemap 可以帮助声明分頁地址,但它通常更适合作為补充,而不是替代内鏈。把分頁全部塞進 Sitemap,並不會自動提高抓取優先級;更重要的是分頁之間能否通過連結自然连通。實际操作中,可以只把重要的列表頁或更新频繁的分頁放進 Sitemap,同时确保列表頁内部有稳定的翻頁連結。

另外注意 Sitemap 中的分頁地址應與站内連結一致,避免同一分頁出現两個不同 URL,造成重复發現。

控制分頁路径的深度

分頁越往後,連結层級越深,蜘蛛到達的成本也越高。如果列表有几百頁,從第 1 頁一路“下一頁”走到第 300 頁並不現實。更實用的做法是:

  1. 在分頁條中保留首尾頁和目前頁附近的頁碼,让蜘蛛可以跳跃前進。
  2. 對更新频繁的列表,考虑按時間或分類拆分,减少單個分頁序列的長度。
  3. 确保詳情頁除了列表頁外,還有其他入口,比如相關推荐、标簽聚合或站内搜尋产生的静態頁。

容易被忽略的几處细节

  • 翻頁連結不要加 nofollow,除非你确實不想让後續頁面被發現。
  • 分頁頁的标题和描述可以保持简洁,但不要全部相同,至少让蜘蛛能区分頁面主题。
  • 如果列表内容為空或只有一頁,不要輸出多余的翻頁連結。
  • 服務器要稳定返回 200 狀態,分頁地址频繁 5xx 或超时,會让後續頁面得不到發現机會。

分頁序列本质上是站内的一條發現通道。把它做成可抓取、可连通、不产生大量重复地址的结构,比事後單獨提交 URL 更省力。定期用抓取工具或日誌核對翻頁入口是否被走到,也能及时發現連結断掉或參數失控的問题。