搜尋抓取

列表頁分頁與蜘蛛路径:翻頁連結怎么留,蜘蛛才會往下走

列表頁是蜘蛛從栏目走向詳情頁的主要通道。翻頁連結的寫法、分頁參數的收口方式、翻頁深度的控制,都會影响蜘蛛能走到第几頁。本文梳理几種常见翻頁寫法的差异,讲清分頁參數為什么會失控,以及如何與 Sitemap、内鏈配合,並用日誌驗證蜘蛛的真實抓取情况。

搜尋抓取

列表頁分頁與蜘蛛路径:翻頁連結怎么留,蜘蛛才會往下走

蜘蛛翻頁,靠的是連結而不是頁碼

很多站点的列表頁做成一個“翻頁组件”,视觉上能点,代碼里却没有可抓取的 href。蜘蛛不會去点按钮,它只認 HTML 里能解析出来的連結。如果第二頁的地址只存在于 JavaScript 事件里,那么從第一頁往後,蜘蛛的路径基本就断了。

判断一個列表頁對蜘蛛友不友好,最直接的办法是:把頁面 HTML 抓下来,看里面有没有指向下一頁的 a 标簽。

几種常见翻頁寫法和它們的差別

  • 普通連結分頁:每頁都有獨立 URL,連結寫在 HTML 里。蜘蛛一路点下去没問题,是最省心的寫法。
  • 只有一個“下一頁”連結:蜘蛛能顺着往下爬,但爬得慢,中間頁要靠 Sitemap 或其他内鏈补。
  • JS 渲染的翻頁:連結在初始 HTML 中不存在,需要渲染後才能看到,蜘蛛能否拿到取决于渲染能力與渲染时机。
  • 無限滚動:滚動触發加载,通常没有獨立 URL。除非同时提供分頁地址,否則深一点的條目蜘蛛基本看不到。

分頁參數要收口,別让它無限長

带參數的分頁(比如 ?page=、?p=、?start=)本身没有問题,問题出在參數组合。排序、篩選、视图模式、每頁條數這些參數叠加起来,同一個列表能生成成百上千個地址。蜘蛛會把這些地址当成不同頁面去抓,抓取预算被消耗在重复内容上。

比較稳妥的做法是:

  1. 保留一套主翻頁參數,其余篩選參數限制可抓取范围,必要时用 robots.txt 或 noindex 收口。
  2. 翻頁超過一定頁數後,内容價值快速下降,可以不再向蜘蛛暴露連結,改用 Sitemap 覆盖真正重要的條目頁。
  3. 排序類參數不要生成可抓取連結,除非它有明确的獨立價值。

翻頁深度:让蜘蛛翻到哪一层就够

列表頁的價值在于把詳情頁暴露出来。如果詳情頁本身已经通過栏目、相關推荐、Sitemap 等多條路径可達,那列表頁翻到几十頁之後的部分,對蜘蛛来说並不是必须的。反過来,如果某個詳情頁唯一的入口就是列表頁第 30 頁,那它大概率長期處于没被翻到的狀態。

判断标准很简單:一個頁面如果没有任何一條不依赖深度翻頁的路径能到達它,它被發現的概率就低。要么给它补内鏈入口,要么放進 Sitemap。

和 Sitemap、内鏈怎么配合

分頁、内鏈、Sitemap 是三件事,但解决的是同一個問题——让蜘蛛知道有哪些 URL 值得来。列表頁负责近處的發現,内鏈负责頁面之間的横向關联,Sitemap 负责兜底的清單。三者重叠没關系,重叠本身也是给蜘蛛的確認信号。

需要注意的是,Sitemap 里放的應该是詳情頁、栏目頁這類相對稳定的地址,而不是把 ?page=2 到 ?page=200 全部塞進去。分頁地址更新频繁、單頁價值低,混進清單反而稀释了信噪比。

服務器响應會直接影响翻頁能不能走完

翻頁路径是一條串行的路:第一頁到第二頁再到第三頁。任何一环超时或返回错誤,後面的就都断了。列表頁通常還是站点里查询最重的頁面之一,缓存没做好时,蜘蛛连續翻頁很容易触發慢响應。

  • 列表頁做頁面級缓存,减少資料库压力。
  • 保證翻頁請求的响應時間稳定,避免個別頁偶發超时。
  • 不要對蜘蛛的翻頁請求做過度限流,否則它可能判断站点不稳定,降低整体抓取频率。

用日誌確認蜘蛛到底翻到哪了

猜没有意义。翻出最近的服務器日誌,篩選蜘蛛 UA,看它請求的列表頁 URL 分布:是集中在第 1 到 3 頁,還是能稳定走到第 10 頁以後;是每天来一次,還是几周才来一次。如果發現它長期只停在前几頁,問题通常出在連結可抓取性或者响應速度上,而不是蜘蛛不想抓。

把這些資料和你自己的预期對一下,再决定是补内鏈、調分頁寫法,還是把重点條目交给 Sitemap。分頁這件事改動成本很低,但它是蜘蛛在站内行走的主干道。