打開服務器日誌,按小时統計蜘蛛請求,常會看到一種分布:少數 URL 被反复訪問,另一些頁面几個月才来一次。前者不一定是問题,但如果不清楚它們為什么被反复抓,優化时很容易把力气用错地方。
日誌里的“重复”其實分几種
同样是“同一個 URL 被抓多次”,背後的原因並不一样:
- 短周期重复:同一小时内多次抓取,常见于首頁、栏目頁這類入口。
- 周期性回訪:隔几天或几周来一次,属于常規的更新检查。
- 參數變体重复:URL 不同但内容一样,例如带排序、追踪參數的版本。
- 重抓但未更新:内容没變,蜘蛛仍反复回来取。
把這四類混在一起看,很容易得出“蜘蛛抓取效率低”的结论,但實际需要處理的可能只有其中一两類。
哪些頁面最容易被反复抓
全站入口與導航可達的頁面
首頁、频道頁處在連結图顶层,几乎所有抓取會话都會经過它們。這部分重复由结构决定,很难也不需要消除。
更新频率高的頁面
如果站点经常發布新内容,蜘蛛會提高對相關栏目和首頁的回訪频率。更新越频繁,回訪越密,這是正常反應。
被大量内鏈指向的頁面
一個頁面被几十上百條内鏈指向,等于向蜘蛛反复確認它的重要性。此时它被高频抓取,是内鏈结构带来的结果。
列表頁與分頁
列表頁内容随新内容變動,且通常是通往詳情頁的必经路径,回訪频率往往高于詳情頁本身。
URL 變体
同一内容出現多個可訪問 URL,蜘蛛會分別抓取。這類重复通常没有價值,是優先處理對象。
重复抓取不全是坏事
蜘蛛愿意反复回来,說明抓取通道是通的,站点也在它的观察范围内。真正需要警惕的是另一種情况:重要的新頁面迟迟不被發現,而無關 URL 被反复抓取,這說明抓取注意力分配得不太合理。
判断标准不是“被抓了多少次”,而是“该被抓的有没有被抓到”。
什么情况下值得動手處理
- 同一内容的多個 URL 各占一份抓取,且頁面本身没有差异。
- 參數頁、篩選组合頁被大量抓取,但不产生獨立内容。
- 重要新頁面發布後長期没有抓取记錄。
- 服務器因為重复請求出現明顯负载或响應變慢。
處理思路
- 先统一 URL:确定規范版本,用 301 把變体收敛過去,内鏈和 Sitemap 都指向規范 URL。
- 收敛内鏈:一個頁面在站内被大量重复連結时,保留有意义的入口,去掉纯装饰性連結。
- 整理 Sitemap:只放需要被抓的規范 URL,避免把參數頁、内部搜尋结果頁寫進去。
- 用好缓存头:ETag、Last-Modified、304 能让内容未變时的重复請求少传輸資料。
- 保持响應稳定:频繁超时或 5xx 會打乱抓取节奏,也可能让蜘蛛降低回訪频率。
- 定期看日誌:按 URL 分组統計抓取次數,和内容更新记錄對照,看重复是否合理。
不必過度干预的情况
首頁、栏目頁、热门詳情頁的高频回訪通常是结构决定的。强行通過 robots.txt 屏蔽或加 nofollow 来“降低抓取次數”,可能连带影响正常 URL 的發現。除非確認某類 URL 确實没有價值,否則優先從结构和規范地址入手。
把重复抓取当成资源分配問题會更容易判断:蜘蛛的精力有限,重复集中在有價值的頁面上属于正常;集中在無差异的 URL 上,才值得調整。