搜尋抓取

搜尋蜘蛛抓取:分頁入口缺失與深层列表頁的發現梳理

列表頁分頁是站内 URL 發現的重要来源,但不少站点只让搜尋蜘蛛拿到第 1 頁。本文從分頁入口的常见形態入手,梳理翻頁控件無 href、脚本渲染、無限滚動、canonical 與 robots 誤配等原因,给出排查顺序和可落地的處理取舍,帮助恢复深层列表頁的可發現性。

搜尋抓取

搜尋蜘蛛抓取:分頁入口缺失與深层列表頁的發現梳理

列表頁的分頁是站内 URL 發現最稳定的来源之一,但實际抓取中经常出現一種情况:搜尋蜘蛛反复訪問第 1 頁,很少進入第 2 頁及以後。很多时候不是服務器拦住了蜘蛛,而是分頁入口在原始 HTML 里根本不存在。

先分清分頁入口的几種形態

  • 静態連結分頁:HTML 里直接给出指向第 2 頁的 a 标簽,地址形如 ?page=2。
  • 脚本渲染分頁:頁碼按钮由 JS 点击事件生成,原始响應里没有連結。
  • 加载更多與無限滚動:只有按钮或滚動监听,没有獨立的可訪問地址。
  • 路径式分頁:通過 /list_2.html 這類地址翻頁,是否可發現取决于連結是否輸出。

第一種對抓取最友好,後几種能否被發現,取决于有没有降級連結和稳定地址。

蜘蛛只停在第 1 頁的常见原因

  • 翻頁控件寫成了 button 或 div,没有 href,解析不到新地址。
  • 頁碼列表由前端請求接口後再渲染,無 JS 执行时頁面上只有第 1 頁。
  • 点击加载更多只在目前頁追加内容,歷史狀態無法通過 URL 复現。
  • 分頁連結被加上 nofollow,或整块被 display:none 隐藏。
  • 分頁規則寫在 robots.txt 里,或分頁參數命中了屏蔽規則。
  • 分頁頁面的 canonical 全部指向第 1 頁,地址虽被發現,却容易被判定為重复而降低後續處理意愿。

排查顺序

  1. 關閉 JS 渲染,直接抓第 1 頁的原始 HTML,搜尋是否存在指向第 2 頁的連結。
  2. 換用不带 Cookie 的請求再確認一次,排除會话或登入態造成的差异。
  3. 检查翻頁控件的标簽類型和属性,確認是否真的輸出 href。
  4. 核對 robots.txt、meta robots、X-Robots-Tag 是否覆盖了分頁路径。
  5. 检查分頁 URL 是否触發服務端限流,返回 403、429 或空响應。
  6. 查看 canonical 與 hreflang 對分頁頁的声明是否合理。
  7. 對照抓取日誌,確認第 2 頁之後的請求比例和首次發現時間。

處理方式與取舍

最直接的做法是保留一套静態可抓取的分頁連結。即使前端体驗上用加载更多,也要在 DOM 中同时輸出下一頁的真實地址。無限滚動可以配合一個查看全部或下一頁的降級入口,保證每一頁地址能被單獨訪問和复現。

分頁深度不必無限放開。對商品、文章這類列表,通常前几頁加上站点地图里的核心入口已经够用;更深的翻頁可以交给篩選、标簽或专题頁承接,避免同一批内容产生大量近似地址。分頁頁的 canonical 建议指向自身,而不是第 1 頁,否則容易出現入口被压制的情况。

分頁問题的核心不是翻頁按钮是否好看,而是每一頁是否存在一個稳定、可直接訪問、能被解析到的 URL。

驗證角度

  • 抓取日誌中第 2 頁及以上路径的請求占比是否上升。
  • 深层列表頁從首次出現到被回訪的時間是否缩短。
  • 分頁地址返回的狀態碼是否稳定,是否出現 200 與 404 混用。

分頁入口梳理通常不需要大幅改版,把控件改成真實連結、补上降級地址、清理誤拦截規則,就能改善一批列表頁的發現效率。具体效果取决于站点規模和抓取预算,建议每次只調整一項,並持續观察日誌變化。