蜘蛛池知识

蜘蛛池里的 robots.txt 与 sitemap:入口页之后怎么继续给蜘蛛指路

入口页负责让蜘蛛进门,robots.txt 和 sitemap 负责告诉它接下来往哪走。本文讲清楚入口站里这两份文件该怎么写、边界在哪里、日常怎么维护,避免蜘蛛读完入口页就无路可走,也避免自己把路提前堵死。

蜘蛛池知识

蜘蛛池里的 robots.txt 与 sitemap:入口页之后怎么继续给蜘蛛指路

入口页的职责是让蜘蛛找到你、愿意读一读。但蜘蛛读完入口页之后往哪走,取决于你有没有给它留路。robots.txt 和 sitemap 就是最基础的两块路牌:一个管“能不能走”,一个管“该往哪走”。这两样东西写错,入口页做得再干净,抓取也可能停在门口。

robots.txt:先想清楚要不要挡

蜘蛛池入口站最常见的错误,是把主站或别的模板直接复制过来。不少模板里带着 Disallow: / 或者整段屏蔽目录的规则,蜘蛛进来一看扭头就走,日志里只剩下 robots.txt 一条请求,入口页一次都没被读过。

入口站本身的目的就是被爬,所以 robots.txt 里通常应该放行主要路径,只精确屏蔽确实没有抓取价值的部分:后台入口、日志目录、临时上传目录、统计脚本路径。屏蔽用具体路径,不要用 /* 这类通配一刀切。

还有一点容易忽略:Disallow 不等于 noindex。被 robots.txt 挡住的 URL,蜘蛛连内容都读不到,自然不会处理页面上的 noindex 标签。如果某个页面确实不想被展示,正确做法是让它可抓取、返回 200、再在页面上给 noindex,而不是在 robots.txt 里一挡了事。

sitemap:入口页之后最省事的指路牌

sitemap 的作用是把入口页之外、你希望被继续抓取的 URL 直接交到蜘蛛手上,省掉它靠链接慢慢爬的功夫。在以“被发现”为核心目标的场景里,sitemap 往往比内链更直接。

几个写法要点:

  • 只放 200 状态、可索引、内容不重复的 URL。跳转页、参数组合页、搜索结果页统统不要塞。
  • 每个入口站最好有自己的 sitemap,并在该站 robots.txt 里用 Sitemap: 一行声明完整地址。
  • 单文件建议不超过 5 万条 URL、50MB 未压缩体积,超了就拆成多个文件,再用 sitemap index 做索引。
  • URL 有增删后要重写文件并更新 lastmod;长期不维护的 sitemap 会把已经 404 的地址一直喂给蜘蛛。
  • sitemap 里的链接只是提示,不代表一定被发现,更不代表一定被收录。

从入口页到目标页,路径怎么铺

sitemap 解决的是“有没有被发现”,链接结构解决的是“能不能顺着走到”。比较稳的做法是入口页只做一层聚合,把蜘蛛引到分类页或列表页,再由列表页指向具体目标页,层级控制在三层以内,蜘蛛不容易在中间迷路。

链接要用 a href 这种可抓取形式,而不是 onclick 或 JS 路由生成。锚文本尽量有区分度,别整页都是“点击这里”“查看更多”这类没有信息量的词。

容易踩的几个坑

  1. robots.txt 写 Disallow: /,然后纳闷蜘蛛为什么不抓页面。
  2. sitemap 里混进大量 301、404 地址,蜘蛛抓几次空,就会降低对这份文件的信任。
  3. 提交完 sitemap 就再也不更新,文件里的 lastmod 还是几个月前的日期。
  4. 一个站拆了几十个 sitemap 文件,却没有总索引,蜘蛛只能靠猜。
  5. 入口页导航是 JS 生成的,源码里根本找不到链接。

一些实际使用建议

  • 先确认 robots.txt 放行正常,再去折腾 sitemap,顺序反了容易白忙。
  • 把 sitemap 当成一份需要日常维护的清单,而不是一次性提交完事的文件。
  • 定期比对蜘蛛日志里的实际访问 URL 和 sitemap 清单,差得太远,说明路牌和真实路径已经脱节。
  • 入口站数量增加时,sitemap 的维护成本也会跟着涨,扩张之前先想清楚谁来维护。
蜘蛛不会因为你在 robots.txt 里写了 Sitemap 就一定来抓,也不会因为文件里列了 URL 就一定收录。robots.txt 和 sitemap 的价值在于把“可以抓”和“该抓哪”说清楚,剩下的仍然取决于内容本身和蜘蛛自己的调度。