常见問题

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、重新评估頁面都需要時間,抓取频率的恢复通常也是逐步的。可以做的是:保持入口頁可訪問、内容有實际更新、结构稳定,让搜尋蜘蛛下次来时能顺利讀到連結。

抓取被拦住和頁面质量不够,是两類不同的問题。先排除前者,再讨论後者,排查效率會高很多。