爬虫抓取异常?谷歌不抓取页面常见原因排查
先分清:没抓取、没索引、没排名是三件事
排查前必须先分清阶段,否则会白忙:
| 阶段 | 含义 | 判断位置 |
|---|---|---|
| 抓取 Crawl | Googlebot 有没有来取过这个页面的 HTML | 网址检查 →「抓取」信息 |
| 索引 Index | 抓到了,但有没有放进索引库 | 网址检查 →「索引覆盖范围」 |
| 排名 Rank | 已收录,但有没有词能搜到 | 效果报告 → 查询词 |
三者的原因完全不同。抓都不抓,谈排名没有意义。
谷歌不抓取页面的常见原因
| 原因 | 表现 | 怎么确认 |
|---|---|---|
| robots.txt 屏蔽 | 网址检查显示「已被 robots.txt 禁止」 | GSC robots.txt 报告 / 直接访问域名 /robots.txt |
| 服务器错误 | 5xx 或超时,爬虫多次失败后降低抓取频率 | 网址检查的「抓取」里看 HTTP 响应码 |
| 页面是孤岛 | 没有任何站内链接指向它,爬虫找不到入口 | Screaming Frog 等爬虫看入链数 |
| 只靠 JS 渲染 | 初始 HTML 是空壳,内容要执行 JS 才出现 | 网址检查 →「测试实际网页」看渲染后的 HTML |
| 抓取预算不足 | 站点极大、速度慢、大量低质 URL 占预算 | GSC 抓取统计报告,看每天的抓取量 |
| URL 参数泛滥 | 筛选、排序、会话 ID 生成近乎无限的 URL | 看索引报告里带 ? 参数的 URL 数量 |
| 需要登录或有权限 | 爬虫拿不到内容 | 退出登录访问该 URL |
标准排查顺序
- 用网址检查工具:输入 URL,看「抓取」有没有成功、HTTP 响应码是多少、Googlebot 用的是手机还是桌面;
- 看是否被指令挡住:页面源码查
<meta name="robots">是否含 noindex,HTTP 响应头查X-Robots-Tag; - 看 canonical:如果该页的 canonical 指向了别的 URL,谷歌会把信号合并到目标页,本页就可能被跳过;
- 查 robots.txt:确认没有把该目录或参数挡掉;
- 查内链:确认至少有 1 条可抓取的 HTML 内链指向它;
- 看渲染:如果是 JS 站点,用「测试实际网页」确认渲染后内容完整,并确认没屏蔽 CSS/JS;
- 查服务器日志:看 Googlebot 到底有没有来过、返回了什么码。
让谷歌重新抓取的正确方式
- 在网址检查里点「请求编入索引」,谷歌会把它排进优先抓取队列(不是立即收录);
- 更根本的办法是补内链和提交更新后的 sitemap,让爬虫自然发现;
- 不要反复对同一 URL 刷请求,这条通道有配额,滥用没用。
常见错误
- 把「没收录」当成「被惩罚」,其实九成是技术原因;
- 只提交 sitemap 却不解决孤岛问题,sitemap 只是辅助发现,不保证收录;
- robots.txt 屏蔽了 CSS/JS,导致渲染出来的是空白页;
- 页面 200 但正文为空(软 404),抓了也不会收。
来源:https://developers.google.com/search/docs/crawling-indexing/ask-googlebot-to-crawl
来源:https://developers.google.com/search/docs/crawling-indexing/block-indexing
