< BACK 大型网站的抓取预算:索引91,000个页面 -- 线条艺术插图

大型网站的抓取预算:为91,000个页面建立索引

在爬虫报告的第47000页左右,我认真考虑过转行。这个网站是一家大型英国电商目录,约有91000个可索引网址,但六个月来一直在34000个页面左右停留不前。没有增长。客户确信肯定有什么地方"坏了"。我告诉他们没有任何问题。我说对了一半。

关键要点:在91000页的网站上,Googlebot爬取什么取决于你的架构告诉它什么:内部链接、网站地图规范和消除浪费决定了哪些页面被索引。

那个项目彻底改变了我对爬虫预算的理解。不是理论上的理解——我读过谷歌文档,看过Search Central的视频,我知道什么是爬虫预算。但理论认知和实际大规模管理是两码事。接下来的内容就是我想告诉2022年3月那个周二早上的自己的一切,那时我第一次打开Google Search Console查看爬虫统计,感到胃一下子沉了下去。

抓取预算实际上意味着什么(以及不意味着什么)

这是一直让人困惑的地方:抓取预算并不意味着"Google会为你索引的页面数量"。它大致指的是Googlebot在给定抓取窗口内会获取的URL数量,Google本身将其定义为抓取速率限制和抓取需求的组合。

爬虫速率限制是Googlebot在不过度负荷你的服务器的前提下的爬行速度。爬虫需求是谷歌想要爬行的程度,取决于你的网址有多热门以及更新频率。把这两个杠杆相乘,你就能粗略了解自己网站会获得多少爬虫关注。

对于大多数不足1000页的网站,这无关紧要。谷歌会爬行一切。但一旦你达到几万页,尤其是超过六位数,Googlebot就开始做出选择。它会优先处理。它会忽视。如果你没有设置它去优先处理正确的内容,它会兴高采烈地把时间花在爬行你的session-ID参数网址和筛选分面页面上,而你的新产品发布会被忽视数周。

这不是假设。这正是在那个 91,000 页项目上发生的事情。

无人警告我的分面导航问题

分面导航是我在大型网站上遇到的最严重的爬虫预算杀手。始终如此。每次都是。

这个目录网站有一个分面筛选系统——颜色、尺寸、材质、品牌——但没有配置任何网址参数处理。每个筛选组合都生成一个独特的网址。你可以选择"蓝色"、"中号"、"棉质"和"BrandX",得到/shop?colour=blue&size=medium&material=cotton&brand=brandx。然后有人改变了顺序,得到/shop?size=medium&colour=blue&brand=brandx&material=cotton。不同的网址,相同的内容。

我运行了 Screaming Frog 爬虫(版本 18,处理 JavaScript 渲染的效果比旧版本好得多),发现筛选系统单独生成了超过 200,000 个 URL。Googlebot 在不断访问这些 URL。与此同时,数千个合法产品页面仍未被索引。

真正有效的解决方案

我们分两个阶段解决了这个问题。首先,我在Google Search Console中配置了网址参数处理,将筛选参数标记为"不改变页面内容",以提示Googlebot进行整合。其次,也是更重要的是,开发团队实施了合适的规范标签策略,将所有筛选组合指向基础分类页面。我们还对无法实际规范化的低价值筛选页面添加了noindex。

大约八周后,索引页面数开始增加。不是激增,而是稳步增长。这实际上是你想要的。索引页面数的突然激增有时可能会触发谷歌的重新评估,而不是赢得一次胜利。

Search Console 中的爬虫统计:大多数人忽视的数据

在过去三年中,我已审计了近80个网站的抓取问题。也许15%交给我的人曾查看过Search Console中的抓取统计报告。这个数字应该高得多。

爬虫统计报告显示每天的平均爬虫请求数、平均响应时间,以及最关键的是Googlebot实际在爬行什么,按目的分类(发现vs.刷新)。如果你的"刷新"爬虫占主导,发现爬虫最少,那就说明谷歌把时间花在重新检查已知页面上。没有发现新页面。这表明你的内部链接可能很浅,或者你的XML网站地图毫无用处。

在那个91000页的项目上,我们每天大约有2400个爬虫请求。对于这个规模的网站,这意味着谷歌理论上需要约38天才能爬行完所有内容一遍,假设每个请求都命中一个独特、有用的页面。但事实并非如此。大约40%的爬虫请求命中了重定向链或参数膨胀的重复页面。

平均响应时间的重要性被严重低估了

在我职业生涯早期,我低估了一件事:Googlebot对服务器速度非常敏感。不是在排名方面(好吧,不是直接相关),而是在爬虫意愿方面。服务器慢会导致Googlebot退缩。Google会降低爬虫速率来避免对困顿的服务器造成压力。

这个目录类网站在高峰流量时,分类页面的首字节时间(TTFB)约为1.8秒。在客户从共享主机迁移到配备适当缓存的专用VPS后(使用WP Rocket进行页面缓存,Redis进行对象缓存),TTFB降到了400毫秒以下。在接下来的六周里,每天的爬虫请求数明显增加了。这当然是相关性,但我看过太多次这种模式,不能不重视它。

XML网站地图:别把它们当成形式化的东西

我继承的大多数网站地图都有问题。不是严重错误,只是悄无声息、毫无用处的问题。

我经常看到的常见问题:

  • 网站地图中包含返回404或301重定向的页面
  • 站点地图中包含的无索引页面(这会让Googlebot感到困惑,你同时在说"爬取这个"和"别索引这个")
  • <lastmod>日期是静态的或根本错误的
  • 单个文件中包含 70,000+ 个网址的站点地图(限制是每个文件 50,000 个,大文件会减慢处理速度)
  • 没有站点地图索引文件,只有一个庞大的 XML 文件

在大型目录项目中,站点地图在单个文件中包含了91,000个URL。它还在包含所有曾生成过的已过滤URL,其中超过40,000个被设置为无索引。Googlebot在处理这个庞大的文件后,发现大多数URL根本不应该被爬取。双方面都浪费了信号。

我们将站点地图架构重建为一个适当的站点地图索引,指向分段的子站点地图:一个用于核心分类页面,一个用于产品页面(由于数量庞大分为两个文件),一个用于编辑内容。每个文件都在 40,000 个网址以下。<lastmod>值根据数据库中的实际最后修改日期动态生成。没有无索引页面,没有重定向。

Bing网站管理员工具的数据(是的,值得检查,Bing有时会向你展示爬取行为模式,暗示谷歌也在经历的结构问题)显示站点地图处理时间下降了超过60%。

内部链接:你真正能控制的杠杆

直到Seahawk在2020年为一个媒体客户接手一个大型内容网站时,我才真正认识到这一点,大约65,000篇文章。该网站存在爬取预算问题,尽管它有格式正确的站点地图和清晰的URL结构。问题出在内部链接深度上。数千篇文章实际上是孤立的,没有从任何被爬取的页面指向它们的内部链接。

Googlebot不仅跟踪网站地图。它跟踪链接。如果一个页面只能通过网站地图条目发现,且没有内部链接,它会被降低优先级。这在官方文档中没有明确记录,但Google关于内部链接的指导明确指出,来自重要页面的可抓取链接是Googlebot如何优先考虑发现的方式。

对于那个媒体客户,我们使用Ahrefs的Site Audit工具审计了内部链接,发现了大约12,000篇文章只有三个或更少的内部链接指向它们。我们在CMS(WordPress,自定义Gutenberg块)中构建了一个自动化的"相关文章"模块,拉取上下文相似的内容。在随后的一个季度里,该网站的索引页面从41,000增长到超过58,000。域名权限相同。内容生产速率相同。只是内部链接更好了。

现在我在每次大型网站审计中使用的编号方法:

  1. 运行完整的Screaming Frog爬取并导出内部链接数据
  2. 识别每个入站内部链接少于三个的页面
  3. 交叉参考链接良好的页面,找到主题集群
  4. 从高流量页面向下构建对话上下文的内部链接到链接稀少的页面
  5. 在Search Console的URL检查工具中验证新链接的页面是否从"已发现,当前未索引"转移到"已爬取"

Search Console中的"已发现,当前未索引"状态是你的警示信号。它意味着谷歌知道该页面存在,但还未优先获取它。改进内部链接通常是解决它最快的方法。

日志文件分析:令人不适但必要

说实话,日志文件分析是我多年来一直回避的东西。当爬取工具能给你大部分信息时,这感觉像是不必要的深入。我错了。

日志文件告诉你Googlebot实际做了什么,而不是你从站点地图或爬取工具推断它做了什么。在一个项目中,一家有大约8,000个产品文档页面的SaaS公司,日志分析揭示了Googlebot将其近30%的爬取时间花在/wp-admin/相邻URL和应该在robots.txt中被阻止的管理端资源上。没人正确设置过这个。文档页面四个月没被爬取过。

Screaming Frog的日志文件分析器是我使用的工具。它不很华丽,但很可靠。导入你的服务器日志,按Googlebot用户代理过滤,然后按URL点击频率排序。出现的模式几乎总是能启发人,也几乎总是包括不应该被爬取的东西。

何时需要担心,何时可以放手

并非每个大型网站都需要积极的爬虫预算管理。如果你有10,000个页面,其中9,800个被索引,就别去动那些杠杆了。你会在不存在的地方制造问题。

爬虫预算管理变得真正值得花时间的情况是:

  • 你有超过15,000个可索引页面
  • 尽管新内容不断添加,但你的索引数量已经停滞
  • 爬虫统计显示平均爬虫请求远低于你对页面量的预期
  • 你看到数千个 URL 处于"已发现,目前未被索引"或"已爬取,目前未被索引"的状态

第二种状态"已爬取,目前未被索引"是不同的,值得单独区分。这意味着谷歌抓取了该页面,但决定不索引它,通常是因为内容单薄或接近重复的问题。再多的爬虫预算优化也解决不了质量问题。

---

常见问题

抓取预算是否会影响小型网站?

很少有真正有意义的影响。如果你的网站页面少于 1,000 个且加载速度快,谷歌几乎肯定会爬取所有内容,无论如何。爬虫预算在大规模网站上才是真正的问题,通常在 10,000 到 15,000 页以上,或者大部分 URL 是动态生成的网站。

直接提交网站地图能解决抓取预算问题吗?

不会。网站地图有助于发现,它告诉谷歌这些 URL 存在。但如果你的网站存在结构性问题(分面导航垃圾、服务器响应缓慢、内部链接层级浅),网站地图不会覆盖这些信号。把网站地图想象成一个建议,而不是命令。

我如何检查Googlebot是否在浪费抓取预算抓取垃圾URL?

从Google Search Console中的"抓取统计"报告开始,查看哪些URL类型获得最多请求。然后交叉参考Screaming Frog爬行,以识别高流量的URL模式,这些模式可能是重复的、noindex的或低价值的。如果你有访问权限,日志文件分析将给你最精确的图景。

我应该使用`noindex`还是`robots.txt disallow`来节省抓取预算?

不同的工具做不同的工作。robots.txt 中的 Disallow 阻止 Googlebot 完全抓取该页面,节省爬虫预算,但意味着谷歌无法读取该页面的任何信号。Noindex 允许谷歌抓取该页面,但告诉它不要在搜索结果中包含该页面。具体到爬虫预算,Disallow 对真正的垃圾 URL(管理路径、内部搜索结果)更有效。对于你希望谷歌了解内容但不索引的过滤分面页面,通常使用带规范标签的 noindex 是正确的选择。

修复抓取预算问题后,多久能看到改善效果?

老实说,这取决于你的爬虫速率。在那个 91,000 页的项目上,主要修复部署后,索引页面数量有意义的增长大约需要六到八周。不要期望一夜之间的变化,Googlebot 需要重新爬取、重新评估,索引管道本身还有额外的延迟。

---

91,000 页的项目最后进展顺利。索引页面在五个月内从 34,000 增加到略高于 71,000。不是完美的,确实有一些薄弱的产品页面本不应该被索引,但重要的内容被找到了。客户不再问是否出了什么问题。而我也不再在爬虫报告的第 47,000 页左右考虑改行了。大部分时候是这样的。

相关阅读:2026年AI搜索关键词研究:它是什么、为什么传统的、301与302重定向:哪一个对SEO真正重要,以及2026年LSI关键词:它们是什么、它们不是什么、什么。

< BACK