GEO知识库网站发布了高质量内容,但搜索引擎或AI爬虫迟迟不来抓取。问题通常出在七个环节之一。按正确顺序逐层排查,可以避免盲目操作,快速定位并修复抓取问题。
第一步:检查服务器返回的状态码
状态码是抓取的基础。Google Search Central明确指出,只有返回200 OK的页面才会被正常索引。4xx(如404、410)或5xx(如500、503)错误会让爬虫直接放弃。
检查方法:
- 使用
curl -I https://yourdomain.com/page-url查看HTTP头信息 - 在Google Search Console的“网址检查”工具中输入页面URL,查看Googlebot看到的响应状态
- 注意重定向链:301/302本身不是错误,但超过5跳或最终目标页返回非200状态,同样导致抓取失败
常见问题:
- SPA应用中,页面实际返回404,但用户端通过前端路由显示正常内容
- WAF或CDN规则对爬虫返回403或503
- 重定向链中存在循环(A→B→C→A)
边界情况:某些CDN或安全服务对爬虫返回“软403”——状态码200但页面内容显示“访问被拒绝”。这种情况需要检查页面实际内容,而非仅看状态码。
第二步:确认robots.txt没有误封爬虫
robots.txt是爬虫访问网站的第一道关卡。Google Search Central文档强调,Disallow规则会直接阻止爬虫抓取指定路径。
检查要点:
- 访问
https://yourdomain.com/robots.txt查看完整内容 - 确认目标页面URL没有被Disallow规则覆盖
- 注意通配符规则,如
Disallow: /会禁止所有爬虫抓取全站 - 检查是否有针对特定爬虫(如GPTBot、CCBot)的单独规则
典型错误:
- 开发环境robots.txt误上线,包含
Disallow: / - 使用
Disallow: /?误封了所有带参数的URL - 新上线栏目未在robots.txt中添加允许规则
决策框架:如果robots.txt中没有任何Disallow规则,但页面仍不被抓取,问题不在这一步,继续往下排查。
第三步:验证canonical标签指向是否正确
canonical标签告诉搜索引擎哪个URL是页面的权威版本。如果指向了其他页面,爬虫可能认为当前页面是重复内容而忽略抓取。
检查方法:
- 查看页面HTML头部中的
<link rel="canonical" href="..." /> - 确认canonical URL与当前页面URL完全一致(包括协议、域名、路径、参数)
- 使用Google Search Console的“网址检查”工具查看Googlebot识别的canonical
常见陷阱:
- 分页列表页(如第2页)的canonical指向第1页,导致第2页内容不被抓取
- 带UTM参数的URL被爬虫访问时,canonical未正确指向无参数版本
- 多语言站点中,canonical指向了错误的语言版本
具体场景:某GEO知识库网站的文章页,因CMS自动将canonical设为分类列表页,导致所有文章页都不被抓取。修复方法是将canonical改为指向文章页自身。
第四步:检查sitemap是否包含该页面且提交正常
sitemap是爬虫发现新页面的重要途径。Google Search Central文档明确说明,提交sitemap可以帮助搜索引擎更快发现网站内容。
检查流程:
- 确认页面URL已包含在sitemap中
- 检查sitemap文件格式是否正确(XML语法、编码、大小限制)
- 验证sitemap已通过Google Search Console提交且无错误
- 查看sitemap中的
<lastmod>标签是否与页面实际更新时间一致
常见问题:
- sitemap中包含大量404页面,导致搜索引擎降低对sitemap的信任度
- sitemap文件超过50MB或包含超过50,000个URL(Google限制)
- sitemap中的URL编码错误(如中文未转码)
决策框架:如果页面在sitemap中且sitemap提交正常,但爬虫仍不抓取,说明问题不在发现环节,而是爬虫无法或不愿访问页面。
第五步:评估内链结构是否让爬虫可达
内链是爬虫发现页面的主要方式。Google Search Central文档强调,页面需要有足够的内链入口才能被爬虫有效发现。
检查要点:
- 页面是否至少有一个来自网站首页或重要栏目的链接
- 内链是否使用可抓取的HTML链接(
<a href="...">),而非JavaScript事件或表单提交 - 链接是否被
rel="nofollow"或rel="sponsored"阻止传递权重 - 页面深度是否超过4次点击(从首页算起)
具体场景:某GEO知识库网站新增了“技术白皮书”栏目,但只在首页底部的小字链接中提及,且该链接被CSS隐藏。爬虫无法发现该栏目下的任何页面。修复方法是在主导航或相关文章区域添加显式链接。
边界情况:即使页面有内链,如果链接所在的页面本身不被抓取或索引,该链接也不会被爬虫发现。需要确保链接来源页面本身可被抓取。
第六步:分析渲染是否被阻塞或失败
对于依赖JavaScript渲染内容的网站,渲染问题会导致爬虫看到空白页面。Google Search Central文档指出,如果JavaScript、CSS等资源被robots.txt或服务器配置阻塞,爬虫可能无法正确渲染页面。
检查方法:
- 使用Google Search Console的“网址检查”工具查看“抓取”和“渲染”结果
- 检查页面是否依赖客户端JavaScript加载核心内容
- 确认关键资源(CSS、JS、字体)没有被robots.txt或服务器配置阻塞
- 测试页面在禁用JavaScript后是否仍显示核心内容
常见问题:
- 使用
<meta name="robots" content="noindex">但通过JavaScript动态移除,爬虫在渲染前已读取meta标签 - 关键API接口被服务器限制爬虫访问,导致页面内容加载失败
- 使用
<link rel="preload">但未正确设置as属性,导致资源被忽略
决策框架:如果页面在Google Search Console的渲染结果中显示空白或内容缺失,则渲染是问题所在。否则,继续往下排查。
第七步:查看服务器日志确认爬虫实际行为
服务器日志是排查抓取问题的最终依据。Google Search Central文档建议,通过日志分析可以确认爬虫是否真的来过、返回什么状态、停留多久。
检查要点:
- 搜索User-Agent包含
Googlebot或Baiduspider的请求 - 查看目标页面URL的请求记录,确认爬虫是否访问过
- 分析爬虫返回的HTTP状态码
- 检查爬虫的请求频率和响应时间
- 对比爬虫访问的URL与sitemap中的URL是否一致
具体操作:
- 使用
grep "Googlebot" /var/log/nginx/access.log | grep "/page-url"快速定位 - 使用日志分析工具(如GoAccess、AWStats)生成爬虫行为报告
- 注意区分不同爬虫(Googlebot、Googlebot-Image、Googlebot-News等)
常见发现:
- 爬虫确实来过,但返回了503(服务器过载或WAF误判)
- 爬虫访问了URL但返回了301,而重定向目标页返回404
- 爬虫访问频率极低,说明页面权重不足,需要加强内链和外部链接
边界情况:如果服务器日志中完全没有爬虫访问记录,说明问题出在发现环节(sitemap或内链),而非页面本身。
Q&A
Q: 如果页面返回200但就是不抓取,最可能是什么原因? A: 最常见的是内链不足或sitemap未提交,其次是canonical指向了其他页面。建议按本文顺序排查,通常在前五步就能找到问题。
Q: 服务器日志怎么看爬虫是否来过? A: 搜索User-Agent包含Googlebot或Baiduspider的请求,查看对应URL的状态码和响应时间。如果完全没有记录,说明爬虫未发现该页面。
如果按上述顺序排查后仍无法解决抓取问题,建议进行深度抓取诊断。天行GEO的抓取诊断服务可以结合服务器日志、爬虫行为分析和结构化数据验证,定位更深层的问题。同时,我们的研究专栏提供了更多关于GEO知识库建设的实战案例和方法论,帮助网站持续优化抓取与索引效率。
内容质量与用户价值原则可参考 Google Helpful Content 官方文档。