很多人做蜘蛛池,注意力都放在入口页本身:内容怎么改、链接怎么排、IP 怎么轮换。但真正决定蜘蛛“看到什么、跳过什么”的,往往是两个最基础的文件——robots.txt 和 sitemap。它们不产生内容,却直接影响爬虫在站群里的行进路线。
robots.txt:先决定蜘蛛不该去哪
蜘蛛池里常见的浪费是,蜘蛛把时间花在参数页、搜索结果页、后台目录、重复的筛选页上,真正希望被抓的入口页反而排不上队。robots.txt 的第一作用就是堵住这些口子。
常见写法要点
- 用 Disallow 屏蔽后台、接口、站内搜索、带排序参数的页面;
- 不要屏蔽 CSS、JS 等渲染资源,否则蜘蛛拿到的可能是残缺页面;
- 不要把整站 Disallow 后,再指望 sitemap 能把页面救回来;
- 规则越少越清晰,避免几十条互相覆盖、自己都读不懂的规则。
robots.txt 只约束“抓取”,不约束“索引”。如果外链指向一个被屏蔽的 URL,它仍可能出现在结果里,只是蜘蛛看不到页面内容。屏蔽之前要想清楚后果。
sitemap:主动告诉蜘蛛有哪些 URL
如果说 robots 是做减法,sitemap 就是做加法。它把希望被发现的 URL 集中列出来,减少蜘蛛纯靠链接爬行时的漏抓。
在蜘蛛池里,sitemap 通常承担两件事:
- 把新增入口页尽快暴露出去,缩短被发现的时间;
- 给蜘蛛一条明确的抓取路径,而不是让它从首页一层层往下翻。
几个容易踩的坑
- 把全站所有 URL 都塞进 sitemap,包括重复页、低质页、参数页,结果抓取预算被稀释;
- sitemap 里包含 404、301 跳转或已下线的页面,白白浪费蜘蛛访问;
- sitemap 中的 URL 被 robots.txt 屏蔽,两个文件互相打架;
- lastmod 长期不变或随意填写,失去参考价值。
分片与更新
URL 数量多的时候,按目录或主题分片,做成 sitemap 索引文件。通常单文件控制在几万条以内比较稳妥,具体以搜索引擎的官方说明为准。更新方面,入口页批量上线后重新提交,比每天改一次时间戳更有意义。
两个文件怎么配合
简单说:robots 负责挡掉不想要的,sitemap 负责递上想要的,两者不能重叠冲突。
- 先用 robots 排除明显无价值的路径;
- 再从剩余可抓 URL 中,挑出真正想被发现的,放进 sitemap;
- 定期用日志验证:蜘蛛是否按 sitemap 抓取,有没有在屏蔽目录上反复出现。
一份简单的检查清单
- robots.txt 有没有误屏蔽入口页或渲染资源?
- sitemap 里的 URL 是否全部可正常访问,没有 404 和多余跳转?
- 两个文件之间有没有“屏蔽了又提交”的矛盾?
- lastmod 是否反映真实的修改时间?
- 访问日志里,sitemap 的抓取频率和入口页的抓取量是否匹配?
最后提醒一句:sitemap 和 robots.txt 都是辅助工具,它们帮助蜘蛛更高效地找到和理解页面,但不能替代内容本身。入口页质量不达标时,再规范的 sitemap 也很难带来实质变化。把这两个文件当作路径管理的一部分,而不是效果保证,心态会更稳。