搜尋抓取

列表分頁翻到第几頁算够:蜘蛛在分頁序列里停在哪里

列表分頁是站内 URL 增長最快的地方,也是抓取路径最容易断掉的一段。本文梳理线性翻頁、頁碼铺開、無限滚動三種结构對蜘蛛的影响,說明如何從日誌判断蜘蛛停在哪一頁,並给出限制翻頁深度、补充詳情頁入口、規范分頁地址等可落地的做法。

搜尋抓取

列表分頁翻到第几頁算够:蜘蛛在分頁序列里停在哪里

列表頁是站内 URL 數量增長最快的地方。一個分類頁如果再带上分頁參數,很容易從几十個頁面扩成几千個。蜘蛛顺着「下一頁」一路走下去,看起来是件好事,實际上它往往走到某一頁就停了,而那一頁之後的内容,長期停在「已發現未抓取」的狀態里。

分頁為什么會吃掉抓取路径

分頁 URL 大多结构相似,頁面之間的差异主要是顺序不同,信息增量低,但每一個都要消耗一次請求。当抓取资源有限时,蜘蛛會把力气放在更有区分度的頁面上。于是你常看到:列表首頁抓得很勤,第二、三頁偶尔来一次,第五頁之後基本没有记錄。

這不一定是處罚,更接近资源分配的自然结果。真正需要留意的是,你希望被發現的詳情頁,是不是只挂在深處的分頁上。

三種常见的分頁结构,蜘蛛待遇不一样

只有「下一頁」的线性翻頁

蜘蛛必须一頁一頁走才能到達深處,路径長、代價高。第 20 頁的詳情頁,可能几周都等不到一次訪問。可以在列表頁顶部补少量關键頁碼,或者把大類拆成子分類,缩短從入口到詳情的距离。

頁碼全量铺開

首頁就把 1 到 100 頁的連結全部列出来,用戶看着方便,但每爬一次列表就要跟進上百個 URL,抓取节奏容易被拉散。更稳的做法是先给前若干頁連結,後面的用「下一頁」接力。

無限滚動與「加载更多」

如果翻頁只靠脚本請求接口、地址栏始终不變,蜘蛛通常拿不到新的 URL。至少要让每次翻頁對應一個可訪問的地址,或者單獨提供一個带分頁的备用入口。

顺带一提,早期用来串联分頁關系的 rel="next" 與 rel="prev" 提示,主流搜尋引擎已经不再作為抓取依據。別指望寫上這两個属性,深處頁面就會被顺利爬完,連結能不能点開、地址能不能直接訪問才是關键。

怎么判断蜘蛛停在了第几頁

  • 在服務器日誌里筛出分頁地址,看訪問次數随頁碼递减的曲线在哪一頁断開。
  • 對照後台「已發現未抓取」的列表,如果大量是深分頁下的詳情頁,問题多半出在路径太長。
  • 同时看分頁頁面的响應時間,慢的分頁會让蜘蛛更早收手。

把分頁收紧的几種做法

  1. 限制可翻頁的深度,超過一定頁數後按時間或其他维度归档,而不是無限翻下去。
  2. 给詳情頁安排第二條進入路径,比如相關推荐、标簽聚合頁、站内搜尋结果的静態落地頁。
  3. 分頁頁面各自指向自身做規范化,避免不同排序參數被当成一批新 URL 反复抓取。
  4. 分頁連結用真實的 a 标簽,确保不执行脚本也能取到下一個地址。
  5. 發現某段分頁長期没有抓取记錄时,先补入口和缩短路径,再考虑其他手段。
分頁本身没有错,错的是让整站最重要的内容只能從分頁底部進入。把關键詳情頁至少安排一條浅路径,比反复催蜘蛛往下翻更有效。

小结

分頁既属于 URL 發現的一环,也是抓取预算最容易流失的一段。定期看一眼分頁序列的訪問分布,往往比盯着總量數字更有意义。当深處的頁面長期没有被抓,優先考虑缩短路径、增加入口,而不是單纯加快频率。