聊蜘蛛池时,大家习惯把注意力放在域名、IP、模板和鏈路上,但真正决定蜘蛛能不能顺着路走進来的,往往是更靠前的一层:robots.txt、meta robots 和 sitemap 這些指令文件。它們本身不产生内容,却直接决定蜘蛛在你的入口站里能讀什么、不能讀什么,以及它有没有一條清晰的路线可走。
robots.txt 在蜘蛛池里到底管什么
robots.txt 是放在域名根目錄的纯文本文件,作用是告诉爬虫哪些路径可以抓、哪些路径不要抓。它有两個经常被忽略的特点:
- 它只是一種约定,遵守與否取决于爬虫本身。主流搜尋引擎通常遵守,但不等于强制。
- 它只控制抓取,不控制收錄。被屏蔽的 URL 如果從別處拿到了外鏈,仍有可能出現在结果里,只是内容可能不完整。
對蜘蛛池来说,入口頁的职责是被發現、被顺路爬到目标頁。如果入口站的 robots.txt 直接寫成了全站 Disallow,那基本等于在门口挂了“谢绝參观”的牌子,入口頁铺得再多,蜘蛛也讀不到。
入口站最容易踩的几種 robots 寫法
全站禁抓
從模板或舊站繼承過来的 robots.txt 忘了改,是最常见的問题。铺量前建议抽查一批入口站,直接訪問根目錄下的 robots.txt,看返回内容和狀態碼是否正常。
通配符誤伤
有人為了屏蔽後台或參數頁,寫了過于宽泛的規則,结果把入口頁所在目錄一起挡掉。規則寫得越短,越要確認它命中的范围。
動態路径被整体屏蔽
如果入口頁 URL 带參數或走伪静態目錄,而 robots.txt 恰好屏蔽了這類特征,蜘蛛會连入口頁都讀不到。改規則时建议先列出入口頁 URL 的形態,再决定怎么屏蔽。
只寫 Disallow,不寫 Allow
在需要“屏蔽大部分、放行少數”的场景里,只靠 Disallow 很难表達清楚優先級,配合 Allow 才能让爬虫更准确地判断。
meta robots 與响應头:頁面級的開關
robots.txt 是站点級,meta robots 是頁面級。入口頁常用的几個值:
- noindex:不收錄该頁,但不阻止抓取。頁面上的連結仍可能被發現。
- nofollow:不追踪頁面上的連結。對蜘蛛池来说這等于自断路径,一般不要用。
- noarchive:不提供快照,對路径引導基本没有影响。
需要注意的是,noindex 會让入口頁本身很难進入索引。如果入口頁還承担承接品牌词或做收錄量的作用,就要先想清楚再决定。另外,X-Robots-Tag 响應头能實現同样的效果,而且對非 HTML 文件也生效,排查时別只盯着 HTML 源碼。
sitemap 该放什么、不该放什么
sitemap 的作用是主動把 URL 清單递给搜尋引擎,缩短發現時間。但它不是提交了就一定抓,更不是提交了就一定收錄。
- 入口頁數量不多、结构稳定时,全量放進 sitemap 是合理的。
- 數量很大时,建议只放稳定的入口层,不要把每一次泛目錄生成的临时 URL 都塞進去,否則清單會频繁變化、体积膨胀。
- 超過單個文件上限要分片,並用 sitemap 索引文件串起来。
- sitemap 里的 URL 應返回正常狀態碼,別把 404 和跳轉鏈放進清單。
一個比較實用的做法是:让 sitemap 覆盖入口頁,让入口頁通過正文連結把蜘蛛带到目标頁。分层清晰,比把所有 URL 堆在一個文件里更容易维護和排查。
给蜘蛛画路径的几條實操建议
- 铺量前先抽查入口站的 robots.txt,確認没有全站禁抓或誤伤目錄。
- 入口頁不要加 nofollow,跳轉鏈上也不要加。
- sitemap 保持稳定,按增量更新,避免频繁全量替換。
- 定期用抓取日誌驗證:蜘蛛是否真的讀到了入口頁,是否顺着連結走到了目标頁。
- 指令层的改動做小步測試,先在一批站上驗證,再决定是否推開。
指令层的價值在于减少摩擦,而不是制造捷径。把 robots.txt、meta robots 和 sitemap 理顺,蜘蛛走的還是那條路,只是路上少了几處不必要的路障。