先把两件事分開:抓取能力與抓取需求
很多运营者把“抓取频次”当成一個可以調的參數,實际它是搜尋引擎根據站点情况给出的结果。粗略拆開,它由两部分决定:抓取能力,也就是爬虫在你的站点上單位時間能安全抓多少;抓取需求,也就是爬虫判断有多少 URL 值得抓、值得重抓。
這两件事的解法完全不同。抓取能力受服務器响應速度、错誤率、超时比例影响;抓取需求受站内 URL 數量、頁面更新频率、頁面之間互相引用的密度影响。只盯着其中一項調,往往看不到變化。
第一层:服務器是不是在劝退爬虫
爬虫降频的第一個原因通常是站点自身不稳定,這属于它的自我保護。日誌里重点看這几類信号:
- 5xx 比例:持續返回服務器错誤,抓取量會被主動压低
- 429:明确表示請求過于密集,處理方式是削峰和加快响應,而不是換 IP
- 响應時間:TTFB 長期偏高,抓取並發上不去
- 连接中断與超时:大量失敗會让爬虫减少同时請求數
這一层的顺序是先修稳定性,再谈優化。服務器不稳时,改内鏈、調结构的收益會被掩盖掉,日誌也讀不出真實结构問题。
第二层:配額花在了哪些 URL 上
抓取量有限时,更常见的問题不是“抓得少”,而是“抓得不值”。以下几類 URL 最容易被反复抓取,却對收錄几乎没有贡献:
- 带大量參數的篩選、排序、對比 URL
- 站内搜尋结果頁
- 软 404 頁面:返回 200 但没有實质内容
- 翻得很深的列表頁,例如第 10 頁之後
處理方式不是一刀切屏蔽,而是先判断哪些 URL 本身有獨立搜尋需求、哪些只是给用戶浏览路径服務。前者可以用 canonical 收敛,後者可以考虑在 robots.txt 中禁止抓取,或加 noindex。這里要留意两者的差別:如果先禁止抓取,noindex 也就無法被抓到並生效。
先让爬虫把時間花在唯一且有價值的 URL 上,再谈抓更多,顺序反了容易白做工。
第三层:站内结构與頁面價值
URL 的發現路径要短
新頁面如果只能靠 sitemap 被發現,抓取優先級通常低于從首頁两三次点击就能到達的頁面。检查方法很朴素:從首頁出發,看重要頁面需要点几次能到,是否只挂在一個長期不更新的栏目下面。
内鏈密度影响重抓
一個頁面如果長期没有新的内鏈指向,内容也不更新,爬虫没有理由频繁回訪。反過来,被多個頁面引用的热点内容,重抓频率自然會高一些。這不是技巧,而是站点结构的自然结果。
更新频率要真實
把 sitemap 里的 lastmod 設定成每天自動變化,並不會換来更高频的抓取,反而會让這個字段失去參考價值。搜尋引擎對“假更新”的容忍度有限,長期如此,字段本身就不被采信了。
哪些操作基本無效
- 在 robots.txt 里寫 crawl-delay:各家支持情况不一致,也不解决根因
- 反复提交 sitemap:重复提交不會改變抓取需求的判断
- 用第三方工具“强制推送”:外部工具無法改變爬虫的調度逻辑
- 短期内批量生成新頁面:只會让有限的配額更分散
一個可以照着做的自查顺序
- 拉最近 30 天日誌,統計各狀態碼占比與平均响應時間
- 列出被抓取量最高的 100 個 URL,看有多少是參數頁、搜尋頁、软 404
- 從首頁出發画一遍重要頁面的点击路径,标出超過四次点击的頁面
- 確認 sitemap 里的 URL 都是規范形式、能返回 200 且确實值得收錄
- 记錄頁面真實的更新节奏,據此調整 sitemap 字段
抓取频次的提升,通常是上面這些動作做完之後的结果,而不是原因本身。把稳定性、URL 卫生和站点结构處理好,爬虫對站点的判断會逐步變化,這個過程一般以周為單位,而不是以天為單位。