抓取与收录原理:Googlebot 如何发现并索引网页
技术 SEO 的第一件事,不是写标题,也不是堆关键词,而是确认搜索引擎能不能顺利发现、访问、理解并收录你的页面。抓取与收录是排名之前的门槛:没有进入索引库,页面就没有机会参与自然搜索排名。
抓取和收录不是一回事#
抓取是搜索引擎爬虫访问 URL 并下载页面资源的过程。收录是搜索引擎分析页面后,决定把它放进索引库的过程。一个页面可以被抓取很多次,但始终不被收录;也可能曾经被收录,后来因为质量、重复或技术信号问题被移出索引。
| 状态 | 含义 | SEO 判断 |
|---|---|---|
| 已发现,未抓取 | 搜索引擎知道这个 URL,但还没访问 | 加强内链、提交 sitemap,等待抓取 |
| 已抓取,未收录 | 页面被访问过,但没有进入索引库 | 检查质量、重复、canonical、noindex |
| 已收录 | 页面进入索引库,可参与排名 | 继续优化搜索意图、内容质量和内链 |
| 已收录但排名差 | 不是索引问题,而是竞争力问题 | 从内容、体验、权威度角度改进 |
Googlebot 如何发现 URL#
Googlebot 发现 URL 的主要来源包括:网站内部链接、其他网站指向你的外链、XML sitemap、重定向目标,以及已经知道的历史 URL。对新站来说,最可靠的方式是让首页、栏目页、文章页之间形成清晰链接,再提交 sitemap。
如果一个页面没有任何内部链接,也没有出现在 sitemap 中,它就接近”孤岛页面”。搜索引擎可能很久都发现不了它,即使发现了,也很难判断它在网站结构中的重要性。
以这篇文章本身为例:它从技术 SEO 栏目索引页获得链接入口,从 30 天行动清单文章的”下一篇”导航获得链接,还出现在侧栏导航中。这三条发现路径完全独立,而且没有任何一条需要 JavaScript 才能跟踪。对 Googlebot 来说,多条可抓取的 HTML 链接意味着更高的发现概率和更明确的站内重要性信号。
更多关于 Googlebot 如何发现和抓取 URL 的细节,可以参考 Google 官方文档:Googlebot 概览。
抓取预算是什么#
抓取预算可以简单理解为:搜索引擎在一定时间内愿意分配给你网站的抓取资源。它不是一个公开固定数值,而是受网站规模、服务器响应、页面更新频率、页面质量、链接结构等因素影响。
小型网站通常不用过度焦虑抓取预算。真正容易出问题的是大型网站、电商站、内容聚合站和带大量筛选参数的网站。比如一个鞋类电商,如果颜色、尺码、品牌、价格、排序都生成可抓取 URL,URL 数量会指数级膨胀,爬虫会把大量时间浪费在低价值页面上。
| 浪费抓取的来源 | 常见表现 | 处理方向 |
|---|---|---|
| 参数 URL | ?sort=、?filter=、?utm= 生成大量重复页 | canonical、noindex、参数管理、内链控制 |
| 重定向链 | A → B → C 多跳才能到最终页面 | 直接把旧 URL 301 到最终 URL |
| 低质量分页 | 大量空列表、薄内容列表页 | 合并、noindex 或改善列表价值 |
| 服务器不稳定 | 5xx、超时、响应慢 | 优化服务器、缓存、CDN 与错误监控 |
什么决定页面能否被收录#
页面能否被收录,至少要过四道关:能访问、允许索引、内容有价值、规范信号清晰。
- 能访问:页面返回 200 状态码,不是登录页、错误页、跳转循环或被服务器拦截。
- 允许索引:没有
noindex,也没有通过响应头设置X-Robots-Tag: noindex。 - 内容有价值:页面不是空内容、重复内容、自动拼接内容或几乎没有独特信息。
- 规范信号清晰:canonical 指向自己或正确的规范版本,而不是误指向其他页面。
<link rel="canonical" href="https://example.com/page.html">
<meta name="robots" content="index,follow">
JavaScript 渲染与收录延迟#
Google 对网页的处理并不是一步到位的。它采用两阶段流程:第一阶段,Googlebot 抓取原始 HTML 并提取其中的链接和文本内容;第二阶段,Google 的网页渲染服务(Web Rendering Service, WRS)使用无头 Chromium 浏览器执行 JavaScript,渲染完整页面。
问题在于,这两个阶段之间存在时间差。第一阶段几乎实时完成,但 JavaScript 渲染需要排队等待 WRS 资源,延迟可能从几小时到几周不等。这意味着:如果你的核心内容依赖 JavaScript 才能生成(比如单页应用 SPA 的路由内容、客户端渲染的列表数据),这些内容的发现和收录都会被推迟。
解决方案是让关键内容在原始 HTML 中就可见。常见做法包括:
- 服务端渲染(SSR):服务器在响应时就返回完整 HTML,客户端再接管交互。Next.js、Nuxt.js 等框架支持这种模式。
- 静态站点生成(SSG):构建时就生成所有页面的完整 HTML 文件,部署后无需服务端运行时。
- 纯静态 HTML:直接编写 HTML 文件,不依赖任何 JavaScript 框架渲染内容。
更多关于 JavaScript 与 SEO 的最佳实践,参见 Google 官方文档:JavaScript SEO 基础知识。
阻止抓取、阻止收录、阻止访问的区别#
很多收录问题来自把几个控制手段混在一起用。robots.txt、noindex、密码保护、canonical 解决的是不同问题,不能互相替代。
| 方法 | 主要作用 | 适合场景 | 常见误用 |
|---|---|---|---|
| robots.txt | 阻止抓取 | 不希望爬虫访问的资源或低价值路径 | 以为它能稳定阻止收录 |
| noindex | 阻止收录 | 允许访问但不希望出现在搜索结果的页面 | 同时被 robots 屏蔽,导致 noindex 无法被看到 |
| 密码/登录 | 阻止访问 | 后台、会员区、测试环境 | 用前端隐藏代替真正访问控制 |
| canonical | 声明规范版本 | 重复或近似重复页面合并信号 | 把独立页面误指向无关页面 |
noindex,就不要用 robots.txt 阻止它抓取这个页面。爬虫抓不到页面,就读不到页面里的 noindex。用 Google Search Console 排查#
Google Search Console 是排查抓取与收录问题的核心工具。新手最常用的是两个地方:URL 检查工具和页面索引报告。
- 复制目标 URL,在 GSC 顶部的 URL 检查框中粘贴。
- 查看”网页是否已编入索引”,判断是未发现、已抓取未收录,还是已收录。
- 查看用户声明的 canonical 与 Google 选择的 canonical,确认规范网址是否一致。
- 测试实时 URL,检查当前页面是否可访问、可抓取、是否有 noindex。
- 修复后请求编入索引,但不要把它当成排名保证。
URL 检查工具返回的结果页面包含多个关键字段,理解它们对准确诊断问题至关重要:
| 字段 | 含义 | 关注点 |
|---|---|---|
| 上次抓取时间 | Google 最近一次成功抓取该 URL 的日期 | 如果距今很久,说明页面可能更新频率低或抓取优先级不高 |
| 抓取方式 | Googlebot 使用桌面端还是移动端抓取 | 大多数网站已切换到移动端优先索引 |
| 是否允许抓取 | robots.txt 是否阻止了该 URL | 如果显示”否”,需要检查 robots.txt 规则 |
| 索引编入状态 | 该 URL 当前是否在 Google 索引中 | 核心判断依据,显示”已编入索引”才表示收录成功 |
| 用户声明的规范网址 | 页面 <link rel="canonical"> 指定的 URL | 应该指向当前页面自身或正确的规范版本 |
| Google 选择的规范网址 | Google 实际认定的规范版本 | 如果与用户声明不一致,说明 Google 认为存在更合适的规范页面 |
| 移动设备易用性 | 页面在移动端是否存在可用性问题 | 字体过小、可点击元素过近、内容超出屏幕等问题会影响移动端体验评分 |
页面索引报告适合看全站趋势:哪些 URL 被 noindex 排除,哪些是重复网页,哪些是已抓取但未收录,哪些返回 404。不要只看一个 URL,要看同类问题是否成批出现。
详细操作说明可参考 Google 官方帮助:URL 检查工具。
一套实用排查流程#
当你发现页面没有收录,可以按这个顺序排查:
- URL 能正常打开,返回 200
- 页面没有登录墙、地区拦截或异常跳转
- robots.txt 没有屏蔽该 URL 或关键资源
- 页面没有 meta robots noindex
- HTTP 响应头没有 X-Robots-Tag: noindex
- canonical 指向当前页面或正确规范页
- 页面出现在 sitemap.xml 中
- 页面至少有一个可抓取的内部链接入口
- 内容不是重复、过薄或自动拼接
- GSC 实时测试结果可抓取、可索引
如果以上都没问题,但页面仍显示“已抓取,尚未编入索引”,通常要回到内容质量和站点整体价值上。技术正确只是入场券,不代表页面一定值得进入索引。
常见 GSC 状态怎么理解#
| 状态 | 含义 | 处理建议 |
|---|---|---|
| 已发现,尚未编入索引 | Google 知道 URL,但可能尚未抓取 | 加内链、确认 sitemap、等待抓取 |
| 已抓取,尚未编入索引 | Google 访问过页面,但暂未收录 | 提升内容独特性,检查重复和 canonical |
| 备用网页,用户未选定规范网页 | Google 认为它是另一个页面的重复版本 | 确认 canonical、内链和 URL 规范策略 |
| 网页会重定向 | 该 URL 不是最终页面 | 确保重定向目标正确,并更新内部链接 |
| 未找到 404 | 页面不存在 | 恢复页面、301 到相关页面,或保持 404/410 |
进阶:服务器日志分析#
Google Search Console 提供的是 Google 视角的抽样数据,而服务器访问日志记录的是每一次真实请求。通过分析日志,你可以获得比 GSC 更完整、更精确的抓取行为数据。
服务器日志中每条请求记录通常包含:客户端 IP、请求时间、请求的 URL、HTTP 状态码、响应大小、User-Agent 字符串等。通过筛选 User-Agent 中包含 Googlebot 的记录,就能提取出所有 Googlebot 的访问行为。
66.249.66.1 - - [23/Jun/2026:10:15:32 +0800] "GET /zh/technical-seo/crawling-indexing.html HTTP/1.1" 200 18562 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
从日志中可以分析出以下关键指标:
- 抓取频率分布:哪些 URL 被 Googlebot 频繁访问,哪些很少甚至从未被访问。频繁被抓取的页面通常是 Google 认为重要或更新频繁的页面。
- 状态码分布:Googlebot 遇到了多少 200、301、404、500 响应。大量 4xx 或 5xx 说明存在死链或服务器问题。
- 响应时间异常:如果某些页面对 Googlebot 的响应时间显著高于平均值,可能存在性能瓶颈,影响抓取效率。
- 抓取浪费:Googlebot 是否在大量抓取低价值页面(参数 URL、分页、搜索结果页),而忽略了重要内容页。
常用的日志分析工具包括 Screaming Frog Log File Analyser(付费,有图形界面)以及基于 grep、awk 的自定义脚本。对于大型网站,日志分析是优化抓取预算分配、发现技术问题的重要手段。
让页面更容易被发现和收录#
- 建立清晰层级:首页 → 栏目页 → 文章页,不要让重要页面埋得太深。
- 保持内部链接可抓取:重要链接使用真实
<a href>,不要只依赖复杂脚本点击。 - 提交并维护 sitemap:只放可索引、规范、返回 200 的重要 URL。
- 减少重复页面:参数页、标签页、筛选页要有明确策略。
- 保证服务器稳定:频繁 5xx、超时和极慢响应会降低抓取效率。
- 持续提升内容质量:独特经验、清晰结构、事实依据和有用示例比单纯字数更重要。
/zh/technical-seo/crawling-indexing.html);内部链接覆盖侧栏导航、面包屑、文章底部翻页器和正文交叉引用四种路径;网站应配备 sitemap.xml 将所有重要页面提交给搜索引擎;所有页面使用纯静态 HTML,Googlebot 无需等待 JavaScript 渲染即可读取全部内容。常见问题#
页面被 Google 抓取了,为什么还是没有收录?
抓取只代表 Googlebot 访问过页面,收录还取决于页面是否可索引、是否重复、是否有足够独特价值、canonical 是否指向自己,以及 Google 是否认为它值得进入索引库。
robots.txt 能阻止页面被收录吗?
robots.txt 主要用于阻止抓取,不等于阻止收录。如果一个被 robots.txt 屏蔽的 URL 仍被外部链接引用,搜索引擎可能只根据链接信息展示该 URL。想阻止收录应使用 noindex,但 noindex 页面必须允许抓取才能被看到。
小网站需要关心抓取预算吗?
几十到几百页的小网站通常不需要过度关注抓取预算。真正需要重视的是清晰内链、稳定状态码、避免孤岛页面和低质量重复页面。大型网站、电商筛选页和大量参数 URL 才更容易出现抓取预算浪费。
site: 指令可以判断页面是否收录吗?
site: 可以做快速抽查,但不适合当作精确收录报表。更可靠的方法是使用 Google Search Console 的 URL 检查工具和页面索引报告。