搜尋抓取

列表頁分頁與蜘蛛抓取:翻頁路径能走多深

分頁列表頁是蜘蛛發現歷史内容的主要通道。文章對比静態分頁、加载更多和纯 JS 分頁在抓取上的差別,說明翻頁深度受抓取预算與頁面层級影响,並给出让分頁路径更清晰、可用日誌逐條驗證的具体做法。

搜尋抓取

列表頁分頁與蜘蛛抓取:翻頁路径能走多深

内容越多的站点,越依赖列表頁把老内容不断送到蜘蛛面前。首頁和栏目頁能放的連結有限,真正承担 URL 發現任務的往往是分頁:第 2 頁、第 3 頁,一直到几百頁。分頁做得好不好,直接影响蜘蛛能不能顺着路径走到内容仓库的深處。

分頁是蜘蛛的主要路径之一

蜘蛛沿着連結走站。首頁連結到栏目頁,栏目頁連結到最新若干篇文章,再往下就是分頁。如果第 1 頁只展示 20 條,而分頁入口又藏在頁面底部,那么第 21 條之後的 URL 就只能靠 Sitemap 兜底。Sitemap 能补充清單,但它不携带内鏈關系,也不保證被優先抓取。

一個常见的現象是:新文章很快被抓,半年前的文章却長期停留在“已發現未抓取”。原因往往不在内容本身,而在于從栏目頁到那篇文章的点击路径太遠,或者中途就断了。

三種分頁實現,蜘蛛看到的差別很大

传统静態連結分頁

每一頁都是獨立 URL,底部有指向上一頁、下一頁和若干頁碼的 a 标簽。蜘蛛可以顺序翻頁,路径明确。這種形式對抓取最友好,也最容易在日誌里追踪。

“加载更多”和無限滚動

這類交互通常靠脚本請求資料接口,再把结果插入頁面。蜘蛛拿到的初始 HTML 里可能只有第一批内容,後續條目並不在文档中。如果脚本执行後能生成真實的 a 标簽,渲染阶段還有机會拿到;如果只是一個点击事件,連結就不存在。

纯 JS 分頁

分頁按钮只改前端路由或局部刷新,地址栏不變。這類頁面在蜘蛛眼里基本是一頁,後面所有内容都缺少入口。要么改成带獨立地址的分頁,要么在頁面里补一组指向各頁的普通連結。

蜘蛛會把分頁翻到多深

没有人能给出一個固定數字。實际能翻多深,取决于抓取预算、分頁連結所處的层級、頁面响應速度和站点整体規模。可以确定的是,层級越深、翻頁越多,被完整抓取的概率越低。几百頁之後的列表,往往只有 Sitemap 才能勉强维持發現。

如果站点内容量很大,與其指望蜘蛛翻到第 300 頁,不如在栏目下面再分一层子分類,让每個列表的頁數控制在合理范围内。层級看似多了一点,但從入口到任意一篇文章的点击距离反而缩短了。

让分頁路径更好走的几個做法

  • 每頁保留完整的 a 标簽連結,不要只寫 JavaScript 事件。
  • 分頁導航放在列表内容之後、頁脚之前,保證它出現在初始 HTML 里。
  • 同时保留“上一頁/下一頁”和具体頁碼,方便蜘蛛從任意一頁進入。
  • 分頁地址保持简洁稳定,避免每翻一頁都追加一串篩選參數。
  • 列表條目里的标题必须是指向詳情頁的連結,不要用跳轉脚本包裹。
  • 對确無抓取價值的篩選组合,用 robots.txt 或 noindex 處理,別让它們挤占路径。

從日誌確認分頁是否被走通

看服務器日誌时,可以按分頁 URL 的模式篩選,观察蜘蛛訪問到了第几頁、訪問频率如何、返回碼是否正常。如果只看到第 1 頁和第 2 頁,後面完全没有记錄,說明路径在這里断了,需要回到内鏈和渲染方式上找原因。如果分頁被大量抓取却迟迟带不出詳情頁,則要检查列表里的連結是否可解析、是否被脚本接管。

分頁不是装饰,它是蜘蛛進入歷史内容的通道。通道越直、連結越實在,新老 URL 被發現的节奏就越稳定。