很多站点的詳情頁不是直接從首頁鏈出去的,而是通過列表頁一层层翻到底才能到達。蜘蛛最终能抓到多少詳情頁,很大程度上取决于它在分頁上愿意走多遠,以及分頁連結在 HTML 里是否真實存在。
分頁為什么容易變成抓取断点
列表頁通常有几十上百條内容,第一屏只露出前 20 條,其余要靠翻頁或点击按钮才能看到。如果第二頁之後的連結不是标准的 a 标簽,而是由 JavaScript 拼接出来,蜘蛛解析 HTML 时就看不到這條路,後面的詳情頁只能靠 Sitemap 或其他内鏈补救。
另一個常见問题是翻頁參數太長。排序、篩選、時間范围與頁碼组合起来可能有几十種寫法,蜘蛛會把它們当成互相獨立的新地址,抓取消耗大量落在列表頁本身,真正需要被抓的詳情頁反而排到了後面。
三種常见翻頁方式與蜘蛛可见性
一、带連結的传统翻頁
- 下一頁、頁碼連結寫在 HTML 里,蜘蛛可以顺着 href 走;
- 注意末尾几頁是否被省略成“...”只保留首尾頁碼;
- 锚文本保持“下一頁”“第 3 頁”這類可讀文字即可,不必堆關鍵詞。
二、按钮式“加载更多”
- 按钮如果没有 href,蜘蛛無法点击,列表頁等于被截断在第一屏;
- 可给按钮配一個指向下一頁的真實連結,或保留一份静態分頁入口;
- 核對时分別查看渲染前後的 HTML,確認連結是否出現。
三、無限滚動
- 滚動加载的内容對蜘蛛最不友好,通常需要配合分頁地址兜底;
- 至少要保證每一屏内容都有一组可訪問的静態 URL。
分頁 URL 的组织方式
两種寫法最常见:?page=2 這類查询參數,以及 /list/page/2/ 這類路径。參數形式改動方便,但容易和排序、篩選參數混在一起;路径形式更清晰,在日誌里按前缀統計也更省事。
- 尽量把分頁地址固定成一種形態,不要两套同时存在;
- canonical 一般指向目前分頁自身,而不是统一指向第一頁,避免整列被合並;
- 分頁頁面可以不提交 Sitemap,但不必急着用 noindex 切断路径,除非確認不再需要被抓;
- 篩選參數建议用 robots.txt 或頁面内連結约束,避免和頁碼自由组合。
用日誌核對分頁是否被抓到底
打開抓取日誌,按列表頁地址前缀筛一遍,重点看几個數字:
- 第一頁以外的訪問占多大比例;
- 訪問過的頁碼最大到第几頁,是否總卡在同一個位置;
- 分頁請求的狀態碼是否干净,有没有 3xx、5xx 混在里面;
- 從分頁進入詳情頁的請求,是否在時間上紧随其後。
如果日誌里几乎没有第 3 頁之後的记錄,問题多半出在連結本身,而不是蜘蛛“不想抓”。反過来,如果分頁請求很多但詳情頁請求很少,更可能是參數组合把抓取分散掉了。
修复顺序建议
- 先確認分頁連結在 HTML 中是真實存在的 a 标簽;
- 再统一分頁地址形態,去掉冗余的排序、會话類參數;
- 检查最後一頁的“下一頁”是否鏈回自身或指向错誤地址;
- 把重要列表頁放進 Sitemap 或首頁内鏈,缩短到達路径;
- 连續观察一到两周日誌,比較修复前後分頁訪問與詳情頁發現的差异。
分頁不是額外的入口,而是詳情頁的必经之路。核對的重点不在頁數多不多,而在每一頁到下一頁的連結是否真的存在、地址是否唯一。