常见问题

robots.txt 设置不当,搜索蜘蛛来了却抓不到内容

搜索蜘蛛日志里有访问记录,却抓不到内容或迟迟不抓入口页,很多时候是 robots.txt 和 meta robots 在起作用。本文梳理整站屏蔽、静态资源屏蔽、robots 返回异常、nofollow 切断链接等常见问题,并给出一份可直接照着走的排查清单与处理建议。

常见问题

robots.txt 设置不当,搜索蜘蛛来了却抓不到内容

在蜘蛛池和站点运营的日常排查里,有一类问题很容易被忽略:搜索蜘蛛的抓取日志里明明有记录,但抓到的是空白页、403,或者干脆什么都没留下。追到最后,往往不是服务器挂了,而是 robots.txt 或 meta robots 把爬虫挡在了门外。下面梳理几个常见设置问题,以及对应的排查思路。

先分清:robots.txt 拦的是抓取,不是发现

搜索引擎处理一个 URL 大致分两步:先发现(通过外链、sitemap、蜘蛛池入口等渠道知道这个 URL 存在),再抓取(真正请求页面内容)。

robots.txt 的作用点在第二步。一个 URL 被写进 Disallow,搜索引擎通常仍然可能知道它存在,但会放弃或减少对它的内容抓取。对蜘蛛池来说,这意味着:如果入口页被自己的 robots.txt 屏蔽,搜索蜘蛛就不会来读这个页面,页面上挂着的外链 URL 自然也难以通过这条路径被发现。

把 robots.txt 当成开关时,要记住它只能影响“抓不抓”,不能决定“知不知道”。

几个高频的设置错误

1. 整站 Disallow: /

测试环境上线时留下的规则、模板里默认写入的规则,都可能让整站被屏蔽。表现是搜索蜘蛛访问任何页面都返回 200,但日志里几乎没有后续抓取,或者只抓了 robots.txt 本身。

2. 屏蔽了 CSS、JS 等静态资源

这类屏蔽不会直接影响 URL 发现,但会影响搜索引擎对页面的渲染判断。如果蜘蛛池入口页的内容和链接依赖 JS 渲染,屏蔽 JS 可能导致评估到的页面内容与实际不符,间接影响抓取意愿。

3. 想用 robots.txt 阻止收录

Disallow 并不能可靠地阻止收录。被屏蔽的页面如果外部有链接指向,仍可能以无摘要的形式出现在结果里。要阻止索引,通常应该让页面可以被抓取,再用 noindex,而不是直接屏蔽抓取。

4. robots.txt 自身返回异常

  • 返回 404:搜索引擎一般视为“没有限制”,可以正常抓取全部内容;
  • 返回 5xx:搜索引擎可能暂时降低抓取频率,等恢复后再来;
  • 返回 HTML 页面或跳转:规则无法被正确解析,效果不可预期。

meta robots 和 X-Robots-Tag 的区别

这两个是页面级的指令。常见组合是 noindex, nofollow:既不索引当前页,也不跟随页面上的链接。对蜘蛛池入口页来说,加上 nofollow 等于主动切断了向外传递 URL 的路径;只加 noindex 则仍然可以跟随链接。

另外,HTTP 响应头里的 X-Robots-Tag 作用与 meta 标签类似,常用于非 HTML 文件(如 PDF)。排查时不要只看 HTML 源码,也要看响应头。

一份可以照着走的排查清单

  1. 直接访问 域名/robots.txt,确认返回 200 且内容是纯文本;
  2. 检查是否有 Disallow: / 或覆盖了蜘蛛池入口页目录的规则;
  3. 确认没有误屏蔽 /js/、/css/ 等必要资源(若入口页依赖渲染);
  4. 查看入口页 HTML 源码和响应头,确认没有 noindex、nofollow;
  5. 用抓取日志核对:搜索蜘蛛是否真的请求过入口页,返回码是多少;
  6. 如果日志里连入口页都没有,再回头查 CDN、WAF、UA 黑白名单等更前端的拦截。

处理建议

发现是 robots.txt 或 meta 指令导致的抓取缺失时,改完规则不要期待立刻见效。搜索引擎重新读取 robots.txt、重新评估页面都需要时间,抓取频率的恢复通常也是逐步的。可以做的是:保持入口页可访问、内容有实际更新、结构稳定,让搜索蜘蛛下次来时能顺利读到链接。

抓取被拦住和页面质量不够,是两类不同的问题。先排除前者,再讨论后者,排查效率会高很多。