蜘蛛池知识

蜘蛛池里的 robots.txt 与 sitemap:给爬虫留门还是设限

robots.txt 和 sitemap 常被当成开关,其实它们只负责引导。本文讲清楚蜘蛛池里这两个文件该怎么写:哪些路径值得挡、入口页目录怎么留、sitemap 放多少条地址、分片与更新频率,以及两类规则互相打架时的排查顺序。

蜘蛛池知识

蜘蛛池里的 robots.txt 与 sitemap:给爬虫留门还是设限

入口页和链接结构安排好了,还是经常有人问:robots.txt 要不要写、sitemap 要不要放。这两个文件不是开关,写错了反而会把本来能抓的路径挡掉,等于自己给爬虫关门。

robots.txt 在蜘蛛池里的实际作用

它只是一个约定,遵守与否取决于爬虫方。真正有用的地方是减少无效抓取,把有限的抓取次数留给想被发现的入口页和目标页。

  • 先保证没写错:Disallow 后面跟的是路径,不是完整网址;不同 user-agent 组之间用空行分隔,否则前一组规则会把后一组吞掉。
  • 别顺手全站禁止:测试环境留下的 Disallow: / 忘了删,是日志里抓取量突然归零最常见的原因之一。
  • 挡掉该挡的:后台路径、站内搜索结果页、带排序和筛选的无限参数、重复的打印页,放出来只会消耗抓取配额。
  • 留出入口页目录:如果入口页集中在某个目录下,确认它没有被别的规则意外覆盖。
  • 声明 sitemap 位置:在文件末尾用 Sitemap 指向地址,成本很低,顺手写上没坏处。

还要注意 robots.txt 和 meta robots 的分工:前者管整站路径,后者管单个页面。meta robots 里的 noindex 只对已经抓到页面的爬虫起作用,如果 robots.txt 先把路径挡住,爬虫可能压根看不到那条 noindex,两套规则别互相打架。

sitemap 值不值得放

它的作用是把地址主动列出来,减少爬虫自己摸索的成本。入口页只有几十条时收益有限;几百上千条时,它能让发现路径更直一些。

放什么地址

  • 只放入口页和少量高价值目标页,不要把整站所有地址一股脑塞进去。
  • 同一批地址不要在多份 sitemap 里重复出现,重复本身就是噪音。
  • 状态码要干净:列表里出现 404,或者 301 跳到完全不相干的地方,整份文件的可信度都会下降。

分片与更新

单份文件建议控制在几万条以内,超了就拆成索引加子文件。更新频率跟着入口页的实际变化走,内容没动就没必要每天重写时间戳。

几个常见误区

  • 用 robots.txt 挡目标页,却指望入口页把爬虫带过去——被挡的路径爬虫不会主动访问,这条链路是断的。
  • sitemap 里塞大量跳转地址,爬虫跟过去拿到的是另一套内容,反而浪费了抓取。
  • 改完 robots.txt 就以为抓取会立刻变化。生效有延迟,日志要观察几天再下结论。

落地时的检查顺序

  1. 浏览器直接打开这两个地址,确认能正常访问,不是 404,也不是登录页。
  2. 逐条核对 Disallow 规则,确认没有覆盖入口页目录。
  3. 从 sitemap 里抽查五到十条地址,看看返回的状态码。
  4. 过几天翻日志,看被抓的路径是否落在预期范围内。
这两个文件解决的是“让爬虫少走弯路”,不解决“愿不愿意抓”。抓取量最终取决于入口页本身的更新、结构和被访问的价值。

所以别把它们当成优化按钮。规则写清楚、别自相矛盾、别挡住自己要走的路,这部分工作就算做到位了。