做蜘蛛池投放时,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 这类基础项做对,只是让前面的工作不至于白费。