很多人做蜘蛛池,注意力都放在入口頁本身:内容怎么改、連結怎么排、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 也很难带来實质變化。把這两個文件当作路径管理的一部分,而不是效果保證,心態會更稳。