抓取预算不是一個固定額度
经常能看到這样的说法:搜尋引擎给每個站点每天分配固定條數的抓取額度,用完就没了。這個理解不太准确。更接近事實的说法是,爬虫在你的站点上愿意投入多少時間,是一個根據结果算出来的量,涉及服務器响應速度、站点規模、内容更新频率、歷史抓取的有效性以及服務器承受能力。它不是被發给你的配額,而是抓取效率的体現。
這也意味着,没有什么操作能直接“申請更多”。能調整的只有两端:让服務器這邊少一些摩擦,让不值得抓的 URL 少占路径。
抓取被浪費时,日誌里通常有這些信号
如果服務器日誌里長期出現下面几種情况,說明抓取時間没有花在有效頁面上:
- 大量带參數、排序、篩選條件的 URL 被反复抓取,内容與主列表高度相似;
- 404、410 以及跳轉鏈很長的老 URL 仍在被持續訪問;
- 同一篇内容有多個版本,爬虫在几個地址之間来回抓;
- 真正會更新、有價值的頁面,反而隔很久才被抓一次;
- 目錄頁、标簽頁、归档頁的數量遠超内容頁。
這些現象不一定立刻让收錄出問题,但它們會持續消耗爬虫愿意花在站内的時間。
把站内 URL 分成三類来對待
與其笼统地说“優化抓取”,不如先把 URL 按優先級排队:
- 需要及时抓取的:新發布的内容頁、會持續更新的核心頁面、承担入口作用的栏目頁。這些頁面要保證内鏈可達、返回 200、正文在初始 HTML 里能讀到。
- 可以慢慢抓的:時間較早、更新少但仍然有效的文章。不需要額外推動,保證内鏈不断即可。
- 尽量少抓的:站内搜尋结果頁、多重參數组合頁、没有獨立價值的标簽頁、空列表頁。處理方式可以是規范到主列表、加 noindex、限制參數组合的可抓取范围,具体看這些頁面是否還有流量價值。
分完之後再回头看日誌,判断會和之前很不一样。
降低每一次抓取的成本
同样的抓取時間,單次成本越低,能覆盖的 URL 越多。可以检查這几項:
- 服務器响應時間是否稳定,尤其是資料库查询較重的列表頁;
- HTML 体积是否過大,首屏之前是否堆了大量無關脚本和样式;
- 正文是否依赖 JavaScript 渲染,抓取到的 HTML 里能否直接看到主体内容;
- 重定向鏈是否過長,站内跳轉能否一步到位;
- 资源文件是否被誤拦,導致頁面渲染不完整。
几個容易走反方向的操作
為了“省抓取”用 robots.txt 屏蔽大量目錄,结果重要頁面里的图片、脚本被一起挡住,頁面渲染不完整;或者為了“多抓”,把站内所有參數頁都放進站点地图,反而让爬虫把時間花在重复内容上。两個方向都會让抓取變得更低效。
調整之後怎么判断有没有效果
不用等很久,可以按周對比日誌里的几個指标:重要 URL 的平均抓取間隔是否缩短、新 URL 從發布到首次被抓的時間是否下降、無效 URL 在抓取總量里的占比是否减少。同时對照索引覆盖报告,看被排除的頁面類型有没有變化。
最後要提醒一点:抓取和收錄是两件不同的事。抓取變得频繁,只能說明爬虫更愿意来了,不代表頁面就會進入索引。如果頁面本身内容质量、重复度或規范声明存在問题,抓取再顺畅,也仍然會在索引這一步被挡下来。