搜尋抓取

分頁連結與蜘蛛抓取:列表頁往後翻,蜘蛛能走多遠

列表頁往往是站点 URL 最集中的地方,也是蜘蛛最容易走到一半就停下的地方。分頁連結是真實 a 标簽還是脚本按钮、頁碼地址是否稳定可訪問、深层頁碼會不會超时,都會直接影响抓取路径能不能延伸到後面的頁面。

搜尋抓取

分頁連結與蜘蛛抓取:列表頁往後翻,蜘蛛能走多遠

列表頁通常是站点里 URL 數量最集中的地方,也是蜘蛛最容易走到一半就停下的地方。抓取路径能不能往後延伸,不只是内容够不够多的問题,更取决于分頁連結怎么寫、頁碼地址怎么设計,以及深层頁面打開时服務器是否扛得住。

蜘蛛翻頁时實际在做的事

蜘蛛進入一個列表頁後,看到的是两類連結:指向詳情頁的連結,以及指向第 2 頁、第 3 頁的連結。它不會像人一样顺手点“下一頁”一路点下去,而是把這些連結放進待抓队列,按一定優先級和抓取预算排队訪問。所以“能不能翻到後面”並不是一次决定,而是由每一頁提供的連結、這些連結的可訪問性、以及服務器响應速度共同决定的。

常见的現象是:第 2、3 頁抓得比較勤,越往後记錄越少,某一頁之後几乎不再出現。多數时候這不是惩罚,而是路径變長、预算有限、以及深层頁碼本身缺少新增連結可走的结果。

三種常见的分頁寫法,走法不一样

普通 a 連結加頁碼

每一頁都列出 1、2、3…以及“下一頁”的 a href,蜘蛛可以從任意一頁繼續往後走,也可以從首頁直接跳到較深的頁碼。這是最省事、最不容易断的结构。缺点是列表頁很長时,頁脚會堆出大量頁碼連結,可能把注意力從詳情頁連結上分走一部分。

只保留一個“下一頁”

頁面里只有“下一頁”的真實連結,路径就變成了线性的:第 1 頁 → 第 2 頁 → 第 3 頁。能走通,但到第 20 頁需要经過 19 跳,中間任何一跳出問题都會让後面的頁面拿不到入口。可以在頁碼区域补几個跳頁連結,比如前後各跨 5 頁,把長路径缩短一些。

按钮或滚動加载,地址由脚本生成

如果“下一頁”是 button,或者滚動到底部才由脚本插入新内容,而最初的 HTML 里没有可点击的 href,蜘蛛往往只能停在首屏能看到的連結上。至少要保證有一個真實可抓取的 href 指向下一頁,再考虑补上滚動加载作為体驗增强。

頁碼 URL 的设計细节

分頁地址建议用稳定的路径形式,例如 /list/page/2/,並且可以被直接訪問、返回 200。查询參數形式的地址也能被抓,但一旦和篩選、排序參數混在一起,就容易产生大量内容近似的地址,把有限的抓取次數分散掉。

  • 頁碼從 1 開始,避免用 page=0 和 page=1 表示同一頁,造成两個地址同一内容;
  • 不要用 #page=2 這類片段标识当分頁地址,片段不會被视為新的 URL;
  • 篩選與排序的组合,最好有明确的索引規則,或在 robots 文件中收口,避免生成無穷组合。

上线前可以自己走一遍的清單

  1. 查看頁面源代碼,確認“下一頁”在 HTML 里存在真實 href,而不是只有脚本事件;
  2. 從第 1 頁開始手動点到第 5 頁以上,看每一跳是否都能到達;
  3. 抽查較深的頁碼,比如第 10、20 頁,確認能直接打開並返回 200;
  4. 检查“上一頁”“下一頁”是否存在指向同一地址的循环;
  5. 確認分頁頁没有被 noindex 或 robots 屏蔽,否則後面的頁面會同时失去入口。

從服務器日誌確認翻頁有没有被抓

在日誌里筛出蜘蛛的 UA,統計带頁碼的 URL 出現频率和狀態碼分布。如果只有前几頁有记錄,說明路径在中途断了,可以回头检查連結形式和深层頁碼的可用性;如果深层頁碼大量返回 5xx 或响應時間明顯偏長,就要先解决服務端問题,再谈路径優化。也可以隔一段時間再看一遍,观察新内容發布後,深层頁碼是否重新被訪問。

分頁本身不决定收錄,它决定蜘蛛有没有机會走到後面那些 URL。把路径铺直、把响應做稳,剩下的交给時間和持續更新。