网站收录

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

日志里爬虫访问次数不少,目标栏目和文章却迟迟没被抓取,多半是抓取预算被参数页、重复 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. 观察两到四周,再对比日志分布,看抓取是否开始向目标目录倾斜。
把抓取预算理解成“注意力”更贴切:你无法命令爬虫来,但可以决定它来了之后,有多少条路通向有用的页面。

抓取变多不等于收录变多

就算爬虫开始频繁访问目标页面,也不代表这些页面会立刻进入索引。抓取只是发现和读取,是否收录还要看内容是否有独立价值、是否与已有页面高度相似,以及页面本身的质量。把预算优化好,解决的是“被看见”的问题;“被收录”这一步,仍然要回到内容本身去处理。这两件事分开看,排查时才不容易走错方向。