搜尋抓取

列表翻頁的 URL 發現:頁碼、加载更多與查看全部的取舍

列表翻頁是站内 URL 增長最快的一段,也是最容易断掉的發現路径。本文從翻頁連結是否寫在源碼里讲起,比較頁碼、加载更多、查看全部三種形態對 URL 發現的影响,讨论深度分頁要不要繼續放開,並给出一份可执行的核對顺序,帮助把列表頁的抓取入口理顺。

搜尋抓取

列表翻頁的 URL 發現:頁碼、加载更多與查看全部的取舍

列表頁的翻頁是站内 URL 增長最快的一段,也是最容易断掉的一段發現路径。商品列表、文章归档、标簽聚合,只要支持翻頁,就可能生成几十到上千個 URL。這些頁面能不能被搜尋蜘蛛看到,取决于翻頁連結是否真的寫在 HTML 里,以及翻到深處之後還有没有入口留着。

先確認翻頁連結在源碼里

分頁控件的實現方式不同,對 URL 發現的影响完全不一样。

  • 用 a 标簽寫死 href,指向 /list?page=2 這類真實地址,搜尋蜘蛛顺着点就能發現,這是最稳的一種。
  • 用 button 或 span 绑定点击事件,跳轉靠脚本执行,初始源碼里看不到下一頁地址,發現就只能依赖渲染。
  • 下拉触底自動加载,地址栏可能變化也可能不變,不變的那種基本等于不给入口。

核對方法很直接:打開頁面源碼,搜尋第二頁、第三頁的 URL 片段。搜不到,就說明這些頁面在初始 HTML 里没有入口,需要改成分頁区同时輸出可点击的連結。

三種翻頁形態各自的取舍

頁碼連結

頁碼連結把每一頁做成獨立 URL,發現路径清晰,也方便用戶直接跳到某一頁,代價是 URL 數量随頁數线性增長。通常保留前若干頁的頁碼就够了,後面的頁用「下一頁」串起来,避免一次性铺開几百個頁碼。

加载更多與無限滚動

無限滚動本身不产生可被發現的 URL,它只是把内容堆在同一頁里。如果确實需要這種交互,可以保留一套分頁 URL 作為骨架,滚動只是在其上做前端增强;滚動时地址栏或歷史记錄有變化,搜尋蜘蛛仍能從分頁連結進入。

查看全部

「查看全部」把多頁内容合成一個頁面,對發現友好,但要留意頁面体积和加载時間。列表很長时,可以只對條數較少的分類提供全部頁,條數多的仍然走分頁。

深度分頁要不要繼續放開

第 20 頁之後的列表頁,用戶点击概率很低,被搜尋蜘蛛抓取的机會也有限。如果這些頁面内容重复度高、篩選參數杂乱,繼續放開只會分散抓取资源。處理方式不是简單删掉,而是明确取舍:保留前几頁的連結入口,深處的頁面通過分類、時間归档、标簽等更细的入口重新组织,让真正有價值的 URL 有更短的路径。

還要注意一点:翻頁連結如果用相對路径,或者带一大堆追踪參數,會派生出一批内容相同的 URL 變体。翻頁參數尽量收敛成一個维度,別让排序、来源、會话 ID 混進連結里。

把分頁纳入 URL 發現核對的顺序

  1. 抽查几個主要列表頁,看源碼里有没有第二頁的連結。
  2. 检查翻頁參數是否统一,是否存在多個參數组合指向同一頁内容。
  3. 確認深處頁碼是否仍能從前一頁逐級点進去,中間有没有断鏈。
  4. 看 Sitemap 里收了哪些翻頁 URL,是否需要按規則筛掉低價值的部分。
  5. 用服務器日誌核對翻頁 URL 的實际抓取情况,重点看是否只有第一頁被反复訪問。
翻頁不是越多越好。判断标准是:這一頁有没有獨立價值,用戶和搜尋蜘蛛值不值得為它多走一步。

分頁的處理没有统一答案,但方向一致——让每一层列表都有清晰、可抓取的入口,同时不让低價值頁面的數量失控。定期抽查翻頁連結的源碼形態和日誌记錄,比事後修补省力得多。