入口頁和連結结构安排好了,還是经常有人問: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 就以為抓取會立刻變化。生效有延迟,日誌要观察几天再下结论。
落地时的检查顺序
- 浏览器直接打開這两個地址,確認能正常訪問,不是 404,也不是登入頁。
- 逐條核對 Disallow 規則,確認没有覆盖入口頁目錄。
- 從 sitemap 里抽查五到十條地址,看看返回的狀態碼。
- 過几天翻日誌,看被抓的路径是否落在预期范围内。
這两個文件解决的是“让爬虫少走弯路”,不解决“愿不愿意抓”。抓取量最终取决于入口頁本身的更新、结构和被訪問的價值。
所以別把它們当成優化按钮。規則寫清楚、別自相矛盾、別挡住自己要走的路,這部分工作就算做到位了。