網站收錄

爬虫每天来几百次,想收錄的頁面却排不上:抓取预算花在哪了

日誌里爬虫訪問次數不少,目标栏目和文章却迟迟没被抓取,多半是抓取预算被參數頁、重复 URL、慢响應和空结果頁消耗掉了。本文给出几個看日誌的判断信号,並按優先級排列處理顺序,帮你把有限的抓取次數引向真正重要的頁面。

網站收錄

爬虫每天来几百次,想收錄的頁面却排不上:抓取预算花在哪了

抓取预算不是後台能調的參數

搜尋引擎没有對外公布每個站点每天能抓多少頁的具体數字,但從服務器日誌里往往能看出規律:同一批爬虫每天的訪問次數大致稳定,且集中在少數几類 URL 上。当站点的可抓頁面數量遠大于爬虫愿意訪問的數量时,能分到每個頁面的訪問次數就變成了一種有限资源。我們平时说的“抓取预算”,指的就是這個現象,而不是某個可以手動調大的開關。它通常由三件事决定:站点的 URL 總量、服務器响應速度,以及這些 URL 在站内被連結和被引用的程度。

先確認预算是不是真的被浪費了

不要一上来就改结构,先拉一段時間的日誌,做几组简單的統計:

  • 爬虫訪問量按目錄分组,看前十個目錄占了多大比例;
  • 統計返回碼分布,200、304、404、301、5xx 各占多少;
  • 看同一批 URL 是否被反复抓取,而新發布的頁面長期没有訪問记錄;
  • 记錄响應時間,找出平均耗时最高的那批 URL。

如果統計结果是你想要收錄的栏目頁和文章頁几乎没有訪問记錄,而一堆參數頁、篩選頁、空结果頁天天被爬,那問题基本可以確認。

三個容易誤讀的信号

  1. 訪問次數多不代表抓得對:大量請求全落在同一個列表的翻頁上,等于没有覆盖新内容。
  2. 304 多不是坏事:协商缓存能省带宽,但如果连内容已经更新的頁面也長期返回 304,就要检查缓存設定。
  3. 新站訪問少是正常的:站点刚上线、外鏈少、歷史資料為空时,爬虫频率天然偏低,這属于观察期,不必急着做激進改動。

常见的几類“吞预算”来源

參數與篩選组合

排序、篩選、追踪參數很容易组合出成倍增長的 URL。它們大多内容相似,却每一個都能被爬虫單獨發現。處理方式通常是:能合並的合並到規范 URL,需要挡住抓取的用 robots.txt 處理,已经進過索引的頁面加 noindex 让它慢慢登出。

站内重复入口

同一個頁面從五個位置被連結,爬虫可能會走五遍。更麻烦的是同一篇内容有多個可訪問 URL。這類情况優先统一内鏈指向,让一個規范版本成為主要入口。

响應慢與重定向鏈

一個頁面如果响應要好几秒,爬虫在同一時間段内能訪問的數量就會明顯下降。多級跳轉、先跳 http 再跳 https、带尾斜杠再跳一次,都會額外消耗一次請求。把跳轉压到一跳、把慢接口換成静態缓存,往往比改结构见效更快。

空结果頁和软 404

返回 200 却没有實质内容的頁面,既占抓取次數,也容易進索引。能返回 404 的就返回,不能返回的至少加 noindex,並取消站内入口。

把预算引到重要頁面:按顺序做

  1. 提高服務器响應速度,先解决超时和 5xx,這是所有後續動作的前提。
  2. 收敛内鏈,让栏目頁和核心文章頁從首頁少數几次点击就能到達,减少不必要的連結出口。
  3. 清理無效入口,把篩選组合、空结果頁、重复 URL 從導航和列表里摘掉。
  4. 用站点地图补齐,把重要但内鏈較弱的頁面列進 sitemap,並保證里面的 URL 都能正常返回 200。
  5. 观察两到四周,再對比日誌分布,看抓取是否開始向目标目錄倾斜。
把抓取预算理解成“注意力”更贴切:你無法命令爬虫来,但可以决定它来了之後,有多少條路通向有用的頁面。

抓取變多不等于收錄變多

就算爬虫開始频繁訪問目标頁面,也不代表這些頁面會立刻進入索引。抓取只是發現和讀取,是否收錄還要看内容是否有獨立價值、是否與已有頁面高度相似,以及頁面本身的质量。把预算優化好,解决的是“被看见”的問题;“被收錄”這一步,仍然要回到内容本身去處理。這两件事分開看,排查时才不容易走错方向。