做蜘蛛池投放时,robots.txt 经常被放在最後才想起来检查。入口頁准备好了,目标 URL 也定了,结果日誌里蜘蛛来得很少,回头一看,是被自己的規則挡在门外。下面把几種常见情况分開说清楚。
先分清:robots.txt 管抓取,不管收錄
robots.txt 里的 Disallow 是给爬虫的抓取指令,它既不承诺頁面不被收錄,也不承诺頁面一定被抓。搜尋引擎有可能通過外部連結知道某個 URL 存在,但因為被屏蔽而拿不到頁面内容,于是出現「URL 出現在结果里但没有摘要」這類現象。所以看到異常时,別只盯着 robots.txt 下结论,要结合服務器日誌一起判断。
入口頁被屏蔽會怎样
入口頁的作用是承载指向目标 URL 的連結。如果入口頁本身被限制抓取,搜尋蜘蛛通常不會去請求這個 HTML,也就讀不到頁面里的連結。這種情况下,蜘蛛池相当于空轉,目标 URL 不會因為這里的連結而被發現。
- 屏蔽整個目錄:该目錄下所有入口頁都抓不到,影响范围最大
- 屏蔽單個路径:影响面小,但新增頁面容易漏掉,需要持續维護
- 同时用 noindex 和 Disallow:noindex 需要抓取後才能生效,屏蔽掉之後這個信号就传不出去
目标 URL 被屏蔽會怎样
蜘蛛顺着入口頁的連結找到目标 URL,如果目标 URL 在 robots.txt 中同样被禁止抓取,請求會停在门口。典型表現是:目标 URL 的抓取次數長期偏低,日誌里能看到蜘蛛訪問了同域其他頁面,却很少碰這個地址。
這種情况下,入口頁做得再细,也很难轉化為對目标 URL 的實际抓取。投放前建议明确一條底线:入口頁可以抓,目标 URL 也要可以抓,两者缺一不可。
几個容易踩的坑
- 測試环境的 robots.txt 忘了改,上线後一直屏蔽整站
- 規則寫得太宽,例如 Disallow 寫了根目錄,後面又用 Allow 放行個別路径,顺序和匹配長度没核對
- robots.txt 本身返回 5xx 或超时。不同引擎的處理策略不一样,可能短期内暫停抓取,也可能当作文件不存在繼續抓
- 把 robots.txt 和 WAF、人机驗證混為一谈。前者是约定,爬虫可以選擇遵守;後者是拦截,直接返回異常狀態碼
投放前的核對顺序
- 確認 robots.txt 能正常訪問,返回 200,内容不是 HTML 错誤頁
- 逐條检查 Disallow 是否誤伤入口頁所在目錄和目标 URL 的路径
- 在日誌里確認蜘蛛真的請求過入口頁 HTML,而不是只取了 robots.txt 就走了
- 投放後观察一段時間内目标 URL 的抓取次數,和投放前做對比
robots.txt 不會帮你提升抓取量,它只能做限制。投放之前把這份文件的邊界划清楚,比事後調整入口頁结构更省事。
最後提醒一句:蜘蛛池影响的是 URL 發現和抓取机會,能不能被收錄、排在什么位置,還取决于内容质量和站点整体情况。把 robots.txt 這類基础項做對,只是让前面的工作不至于白費。