搜尋抓取

翻頁連結與 URL 發現:蜘蛛在第 2 頁之後會怎么走

列表頁是站内 URL 最密集的地方,分頁结构直接决定蜘蛛能顺着連結走多遠。本文說明獨立分頁、点击加载更多、無限滚動三種寫法對 URL 發現的影响,列出上线前的检查点,並解释為什么把分頁 canonical 全指向第 1 頁會截断抓取路径。

搜尋抓取

翻頁連結與 URL 發現:蜘蛛在第 2 頁之後會怎么走

列表頁往往是站内 URL 密度最高的地方。一個栏目翻到第 20 頁,背後可能對應上千條詳情頁地址。蜘蛛能不能走到這些地址,很大程度取决于第 1 頁里有没有留下一條它能顺着往下走的路。

分頁在 URL 發現里的位置

典型的抓取路径是:首頁 → 栏目頁 → 列表第 1 頁 → 詳情頁。第 1 頁承担两件事:把目前頁的詳情 URL 交出去,以及把“下一頁”這條通道留出来。如果第二步断了,後面的分頁和詳情頁就只能靠 Sitemap 或外鏈兜底,發現速度會明顯慢下来,更新也不容易被及时看到。

三種翻頁寫法的差別

獨立 URL 的分頁

每一頁都有自己的地址,比如 ?page=2 或 /list/page/2/ 這類形式,HTML 里用 a 标簽指向下一頁,蜘蛛顺着連結逐頁推進。這是最容易被抓取的结构,也是排查問题最简單的结构——日誌里能直接看到第几頁被請求過。

点击加载更多

初始 HTML 里通常只放一個按钮,後續内容由脚本請求返回。這類结构對 URL 發現不够友好:按钮本身往往不是連結,蜘蛛不一定會去触發它。可行的做法是给“加载更多”配一個可点击的普通地址,或者在列表底部保留一组静態分頁連結作為兜底。

無限滚動

用戶滚動时自動加载,頁面上没有明确的分頁地址。即使把詳情頁都放進 Sitemap,列表頁之間缺少连接關系,重訪和更新發現的效率依然會打折。常见补救方式是在滚動区域下方补一段可爬的分頁連結。

上线前值得逐條過的检查点

  • 第 1 頁的 HTML 源碼里,能找到指向第 2 頁的可点击 a 連結,而不是只有 onclick 或 javascript 伪协议。
  • 分頁地址是稳定、可复現的,不要带随机會话參數或時間戳。
  • 分頁頁面的 canonical 指向自身,不要整站统一指回第 1 頁。
  • 第 2 頁之後的 title 和描述可以简化,但正文列表要能正常返回内容,不要返回空壳頁面。
  • 列表頁如果暂时不希望被索引,用 noindex 时保留 follow,避免把通往下一步的連結一起掐掉。
  • 篩選、排序、日歷這類會生成组合地址的功能,给一個明确的頁數或參數上限,別让 URL 無限增殖。
  • 移動端和 PC 端的分頁结构保持一致,避免只有一端可爬。
  • 分頁頁面的响應時間留出余量,第 1 頁加载缓慢會直接影响後續頁的抓取节奏。

一個常见的坑:canonical 全指向第 1 頁

有些站点為了處理“分頁内容重复”,把第 2 頁到第 N 頁的 canonical 全部寫回第 1 頁。结果是蜘蛛每走到一條分頁連結,都被告诉“真正的地址是第 1 頁”,後續頁面的收錄和路径延續都會受影响。更稳妥的做法是让每頁 canonical 指向自身,只在确實存在等價地址(例如排序參數不同但内容完全一致)时才做归一。

怎么在日誌和後台里驗證

在服務器日誌里筛一下對分頁地址的請求,看看第 1 頁之外的頁有没有被訪問、訪問频率如何。如果日誌里始终只有第 1 頁,再回头检查連結是否可爬、canonical 是否寫错、頁面是否返回了空内容。搜尋控制台里的已發現未编入索引、抓取統計中的响應分布,也能從侧面反映分頁地址有没有被正常讀到。

分頁不只是浏览体驗問题,它同时是站内最密集的一條 URL 發現通道。把這條通道留通,後面的詳情頁才有被發現的机會。

分頁结构不需要做得很复杂。可爬的連結、稳定的地址、自指的 canonical,再加一個合理的頁數上限,通常就能让抓取路径顺利延續到列表深處。