搜尋抓取

分頁與加载更多:列表頁如何把詳情 URL 交给搜尋蜘蛛

列表頁是詳情頁 URL 的重要發現入口。传统分頁、加载更多、無限滚動對抓取路径影响不同。本文從翻頁連結可抓取、分頁參數收敛、加载更多补入口、Sitemap 與内鏈分工、服務器响應和日誌核對几個方面,整理列表頁抓取入口的检查思路,帮助减少無效翻頁和漏抓。

搜尋抓取

分頁與加载更多:列表頁如何把詳情 URL 交给搜尋蜘蛛

列表頁通常是詳情頁 URL 被發現的第一站。搜尋蜘蛛顺着列表中的連結往下走,能拿到多少詳情地址、翻頁是否顺畅、加载更多是否可抓,都會影响抓取路径的完整度。與其只看 Sitemap 提交了多少 URL,不如回到列表頁,核對它實际递出了哪些入口。

翻頁連結要能被直接抓取

传统分頁不该依赖 JavaScript 点击。如果翻頁地址寫在 href 里,蜘蛛可以逐頁跟進;如果只是按钮绑定事件,抓取路径容易在第二頁断掉。核對时可以在關閉脚本的环境下查看列表頁,確認下一頁、頁碼連結是否仍然存在。

  • 頁碼連結使用可解析的 URL,例如 /list?page=2 或 /list/page/2。
  • 不要用 nofollow 屏蔽翻頁,除非该分頁确實不需要被抓取。
  • 最後一頁之後不要返回 200 空列表,容易形成空入口。

加载更多與無限滚動需要补入口

点击加载更多、滚動加载的列表,詳情連結往往在脚本执行後才出現。蜘蛛可能只看到首屏若干條。可以保留一個可抓取的“查看更多”連結,指向下一批資料;或者把加载更多對應的接口地址轉成静態分頁,供抓取使用。

如果頁面必须依赖脚本,至少保證首屏連結是 HTML 中直接存在的,並给後續批次留一個普通連結入口。

分頁參數要收敛,避免重复發現

同一個列表可能通過 page、offset、start、last_id 等多個參數组合訪問。參數越多,蜘蛛可能把同一批内容当成不同頁面反复抓取。建议固定一種分頁命名,其他舊參數做 301 到規范地址,並在日誌里观察哪些參數被高频訪問。

  1. 确定主分頁參數,例如 page。
  2. 排序、篩選參數只保留必要维度,避免與分頁组合出大量 URL。
  3. 對空结果頁、超出范围頁返回 404 或 410,不要让它們參與抓取队列。

Sitemap 與内鏈的分工

Sitemap 适合提交詳情頁、栏目頁的規范地址,但它不能替代列表頁的抓取路径。列表頁负责让蜘蛛按站内结构發現新内容,Sitemap 负责补充入口較深或更新频繁的地址。两者都指向同一批 URL 时,要保持規范地址一致,避免參數版和静態版混用。

  • 列表頁連結:负责日常發現和更新信号。
  • Sitemap:负责兜底提交和批量核對。
  • 日誌:负责驗證两者是否都被抓取,以及抓取是否落到同一規范地址。

服務器响應影响翻頁节奏

列表頁抓取通常呈批量连續請求。如果服務器响應變慢,蜘蛛可能降低翻頁速度,甚至只抓前几頁就离開。检查日誌时,可以把列表頁請求按時間窗聚合,观察响應時間、狀態碼和翻頁深度是否同步變化。持續 5xx 或長時間高延迟,會让抓取路径變短。

用日誌核對列表到詳情的鏈路

在日誌中篩選列表頁地址,看蜘蛛實际訪問了哪些頁碼,再對照詳情頁日誌,判断哪些詳情 URL 是從列表頁被發現的。重点看三件事:翻頁是否连續、詳情連結是否被跟進、空列表是否仍返回 200。發現断点後,優先修連結和狀態碼,而不是反复提交 Sitemap。

  • 翻頁连續:從第 1 頁到第 N 頁的請求是否均匀出現。
  • 詳情跟進:列表頁抓取後,是否出現對應詳情頁請求。
  • 異常狀態:空列表、越界頁碼是否返回 200。

把列表頁当作 URL 發現的第一入口来维護,比只盯着抓取總量更有用。翻頁連結可抓、加载更多有补位、分頁參數收敛、服務器稳定,再配合 Sitemap 和日誌核對,就能让詳情頁 URL 的發現路径更清楚。