聊蜘蛛池时,大家习惯把注意力放在域名、IP、模板和链路上,但真正决定蜘蛛能不能顺着路走进来的,往往是更靠前的一层:robots.txt、meta robots 和 sitemap 这些指令文件。它们本身不产生内容,却直接决定蜘蛛在你的入口站里能读什么、不能读什么,以及它有没有一条清晰的路线可走。
robots.txt 在蜘蛛池里到底管什么
robots.txt 是放在域名根目录的纯文本文件,作用是告诉爬虫哪些路径可以抓、哪些路径不要抓。它有两个经常被忽略的特点:
- 它只是一种约定,遵守与否取决于爬虫本身。主流搜索引擎通常遵守,但不等于强制。
- 它只控制抓取,不控制收录。被屏蔽的 URL 如果从别处拿到了外链,仍有可能出现在结果里,只是内容可能不完整。
对蜘蛛池来说,入口页的职责是被发现、被顺路爬到目标页。如果入口站的 robots.txt 直接写成了全站 Disallow,那基本等于在门口挂了“谢绝参观”的牌子,入口页铺得再多,蜘蛛也读不到。
入口站最容易踩的几种 robots 写法
全站禁抓
从模板或旧站继承过来的 robots.txt 忘了改,是最常见的问题。铺量前建议抽查一批入口站,直接访问根目录下的 robots.txt,看返回内容和状态码是否正常。
通配符误伤
有人为了屏蔽后台或参数页,写了过于宽泛的规则,结果把入口页所在目录一起挡掉。规则写得越短,越要确认它命中的范围。
动态路径被整体屏蔽
如果入口页 URL 带参数或走伪静态目录,而 robots.txt 恰好屏蔽了这类特征,蜘蛛会连入口页都读不到。改规则时建议先列出入口页 URL 的形态,再决定怎么屏蔽。
只写 Disallow,不写 Allow
在需要“屏蔽大部分、放行少数”的场景里,只靠 Disallow 很难表达清楚优先级,配合 Allow 才能让爬虫更准确地判断。
meta robots 与响应头:页面级的开关
robots.txt 是站点级,meta robots 是页面级。入口页常用的几个值:
- noindex:不收录该页,但不阻止抓取。页面上的链接仍可能被发现。
- nofollow:不追踪页面上的链接。对蜘蛛池来说这等于自断路径,一般不要用。
- noarchive:不提供快照,对路径引导基本没有影响。
需要注意的是,noindex 会让入口页本身很难进入索引。如果入口页还承担承接品牌词或做收录量的作用,就要先想清楚再决定。另外,X-Robots-Tag 响应头能实现同样的效果,而且对非 HTML 文件也生效,排查时别只盯着 HTML 源码。
sitemap 该放什么、不该放什么
sitemap 的作用是主动把 URL 清单递给搜索引擎,缩短发现时间。但它不是提交了就一定抓,更不是提交了就一定收录。
- 入口页数量不多、结构稳定时,全量放进 sitemap 是合理的。
- 数量很大时,建议只放稳定的入口层,不要把每一次泛目录生成的临时 URL 都塞进去,否则清单会频繁变化、体积膨胀。
- 超过单个文件上限要分片,并用 sitemap 索引文件串起来。
- sitemap 里的 URL 应返回正常状态码,别把 404 和跳转链放进清单。
一个比较实用的做法是:让 sitemap 覆盖入口页,让入口页通过正文链接把蜘蛛带到目标页。分层清晰,比把所有 URL 堆在一个文件里更容易维护和排查。
给蜘蛛画路径的几条实操建议
- 铺量前先抽查入口站的 robots.txt,确认没有全站禁抓或误伤目录。
- 入口页不要加 nofollow,跳转链上也不要加。
- sitemap 保持稳定,按增量更新,避免频繁全量替换。
- 定期用抓取日志验证:蜘蛛是否真的读到了入口页,是否顺着链接走到了目标页。
- 指令层的改动做小步测试,先在一批站上验证,再决定是否推开。
指令层的价值在于减少摩擦,而不是制造捷径。把 robots.txt、meta robots 和 sitemap 理顺,蜘蛛走的还是那条路,只是路上少了几处不必要的路障。