做蜘蛛池时经常遇到一种情况:入口页上的链接写得很规范,日志里也能看到搜索蜘蛛来抓入口页,但目标URL过了很久还是没有出现在搜索结果里。这时不少人会回头改入口页结构,其实更常见的卡点在目标URL自己身上——它可能被 robots.txt 挡住,或者页面里写了 noindex。
先分清两件事:链接被抓取,和页面被索引
搜索蜘蛛来抓入口页,是为了从页面里发现新的URL,这一步只解决“知道有这个地址”的问题。至于这个地址后面会不会被抓取、能不能进入索引,还要看它自身的状态:能不能正常访问、是否被 robots.txt 允许抓取、页面有没有给出禁止索引的信号。
也就是说,入口页负责“递地址”,目标页负责“交答卷”。入口页做得再好,如果目标页把门关上了,后面的流程照样走不通。
目标URL被 robots.txt 屏蔽时会怎样
如果目标URL落在 Disallow 规则覆盖的路径里,搜索蜘蛛即使从入口页拿到了链接,抓取阶段也会被拦下来。它拿不到页面内容,也就无从判断页面讲什么,通常无法正常进入索引。
robots.txt 约束的是抓取行为。它的作用是“别来抓”,而不是“别收录”,但在实际结果上,抓不到的页面往往也就失去了被正常收录的机会。
还有一种隐性情况:robots.txt 里写了全站屏蔽规则,但上线时忘了改,或者测试环境的 robots.txt 被同步到了正式站。这类问题不会报错,日志里反而会看到大量抓取被拒的记录。
目标URL自带 noindex 时会怎样
noindex 是页面级别的指令,通常写在 meta robots 标签或 HTTP 响应头里。它和 robots.txt 的区别在于:搜索蜘蛛可以正常抓取这个页面,读到内容,也读到了 noindex,于是按指令把它排除在索引之外。
所以这种情况下,日志里能看到目标URL被抓取,但搜索结果里始终查不到。很多人看到“被抓取了却没收录”,第一反应是抓取不充分,其实是指令层面的问题。
这种情况下,入口页的链接还有意义吗
不能一概而论,要看具体场景:
- 目标URL需要被收录:链接本身没有错,但必须先把 robots.txt 的屏蔽和 noindex 处理掉,否则入口页的投入基本是无效的。
- 目标URL是阶段性隐藏:比如还没上线完成的页面,此时用 noindex 或 robots.txt 屏蔽是合理的,入口页链接可以保留,等放开限制后再观察抓取反应。
- 目标URL是重定向中转页:如果它本身不被收录,但能跳到最终页面,那入口页仍然有价值,前提是跳转链路能被正常跟随。
- 目标URL需要登录或付费才能看:搜索蜘蛛拿不到内容,链接存在也换不来索引,这种投入产出要重新评估。
一个可操作的排查顺序
- 直接访问目标URL,确认返回状态码正常,不是 404、403 或 5xx。
- 打开目标站的 robots.txt,检查目标路径是否被 Disallow 覆盖,注意通配符和结尾斜杠的写法。
- 查看目标页面的 meta robots 标签和 HTTP 响应头,确认没有 noindex、nofollow 之类的指令。
- 在入口页的抓取日志里,确认搜索蜘蛛确实抓取了入口页,并且入口页返回的是 200。
- 再看目标URL自身的日志,区分“没被抓取”和“抓取了但没收录”两种情况。
几个容易踩的坑
第一,把 robots.txt 当成收录开关。它管的是抓取,关于“要不要收录”应该用 noindex,两者混用容易两头落空。
第二,改完 robots.txt 就以为立刻生效。搜索蜘蛛会缓存 robots.txt,改动到实际生效之间通常有延迟,需要留出观察时间。
第三,只盯入口页。入口页和目标的配置要一起看,任何一端出问题,链路上的后续步骤都会断掉。
小结
蜘蛛池入口页解决的是 URL 发现,解决不了目标页自身的抓取和索引限制。碰到“搜索蜘蛛来了但目标没动静”的情况,优先去查目标URL的 robots.txt 和 noindex 配置,再回头优化入口页,通常能少走很多弯路。