做蜘蛛池时经常遇到一種情况:入口頁上的連結寫得很規范,日誌里也能看到搜尋蜘蛛来抓入口頁,但目标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 配置,再回头優化入口頁,通常能少走很多弯路。