大多數站点的詳情頁不是靠首頁直接连出去的,而是靠一层层列表頁带着蜘蛛走到。列表頁的翻頁、加载更多、篩選和排序,决定了蜘蛛在有限的抓取次數里能摸到多少詳情頁。路径铺得好,新内容上线後被發現的节奏會顺一些;铺得不好,蜘蛛可能翻两頁就离開,後面几百條内容一直等着。
分頁連結用哪種形式,蜘蛛更容易跟
分頁是列表頁最基础的導航,常见的几種寫法對抓取的影响並不一样。
- 獨立路径分頁:形如 /list/2/、/list/3/ 的地址,每個頁碼都是可抓取的獨立 URL,蜘蛛顺着“下一頁”連結能一路往後走,是目前最省事的形式。
- 參數分頁:形如 /list?page=2 的地址同样可以被抓取,但要注意別让排序、来源追踪等參數混進来,否則同一頁會出現多個版本。
- 按钮式加载更多:如果“加载更多”只是用 JavaScript 追加内容、不产生新的 URL,蜘蛛通常不會繼續往下点,它看到的列表長度就等于第一屏。
- 無限滚動:問题類似,滚動到底部才追加内容,而蜘蛛不會滚動。建议同时给出一组静態分頁連結兜底。
分頁常见的几個卡点
- 把第 2 頁之後的連結统一加了 nofollow,等于把列表的下半段封了起来。
- 分頁用 JavaScript 跳轉而不是真實的 a 标簽 href,蜘蛛未必會执行。
- 頁碼深到几十上百頁後内容重复度高、更新少,蜘蛛自然减少訪問。
- “下一頁”指向的 URL 每次带一串随机參數,翻頁變成一堆新地址。
篩選與排序參數:抓取浪費的主要来源
篩選條件一多,组合出来的 URL 會成倍增長。颜色、尺碼、價格区間、排序方式各自相乘,很容易出現几千個只有细微差別的列表頁。蜘蛛會把這些地址都当成新頁面去發現,抓取被大量消耗在几乎相同的内容上,真正需要更新的詳情頁反而排到後面。
處理思路通常是分档,而不是一刀切:
- 保留少量有搜尋需求、能带来實际訪問的篩選组合,给它們稳定的 URL,並寫好頁面标题和描述。
- 其余组合让頁面預設不輸出可点击連結,或统一指向一個規范地址,避免蜘蛛顺着參數一路發散。
- 確認某類參數頁确實不需要被抓取後,再用 robots.txt 或 robots meta 拦截。注意拦截的是“不抓取”,不等于“不索引”,两者要分清楚。
- 排序參數一般只保留一個預設顺序给蜘蛛,其余顺序不輸出連結。
让翻頁路径更顺的几件事
- 每頁都放“上一頁 / 下一頁”,並且是真實的 a 标簽連結。
- 分頁 URL 保持規則、可预测,頁碼不要寫成無意义的随机串。
- 列表里的每一條都直接指向詳情頁,別让人和蜘蛛再点两层才到内容。
- 把最新、最重要的内容排在前面,蜘蛛翻前几頁时就能拿到。
- 列表頁本身要有一定更新频率,長期不動的頁碼抓取優先級會下降。
Sitemap 作為补充入口
分頁連結是蜘蛛在站内自然行走的路线,Sitemap 則是直接递上一份清單。两者不冲突:列表頁负责日常更新和關联發現,Sitemap 适合放那些不容易從首頁翻到的詳情頁,以及新上线的一批内容。分頁地址本身通常不必全部放進 Sitemap,但第一頁和几個主要入口值得收錄其中。
用日誌看路径是否真的走通
判断路径有没有铺好,光看頁面不够,還得看蜘蛛實际怎么走。
- 看列表頁被訪問後,蜘蛛下一步是跳到詳情頁,還是直接离開。
- 看詳情頁日誌里来源是列表頁、Sitemap 還是別的入口。
- 看哪些頁碼長期没被訪問過,判断是連結断了,還是抓取優先級被压低。
列表頁的價值不在于頁數多,而在于每一頁都能把蜘蛛带向一组新的、值得抓的詳情頁。