蜘蛛池的入口頁承担的角色,说到底是把 URL 递到蜘蛛面前。但在這之前還有一個更前置的問题:蜘蛛得先知道這個入口頁存在。哪怕入口頁本身结构没問题、狀態碼正常、内容也在更新,只要没有任何一條路径能把蜘蛛领過来,它就只是一堆躺在服務器上的頁面。
蜘蛛發現一個陌生 URL 的几條常见路径
搜尋引擎發現 URL 的方式並不神秘,常见的無非几種:
- 主動提交:站点的 sitemap、搜尋平台的 URL 提交接口、RSS/Atom 订阅源,都属于把 URL 直接交出去。
- 站外頁面上的連結:別的站点、博客、導航頁、论坛里有一條指向入口頁的連結,蜘蛛在抓那些頁面时顺路跟過来。
- 站内互鏈:入口頁之間、入口頁與栏目頁之間互相連結,蜘蛛從已知頁面扩散到未知頁面。
- 歷史队列:蜘蛛以前抓過某個域名,之後可能按自己的节奏回来重訪,看看有没有新 URL 出現。
蜘蛛池常见的做法是後两條用得比較多——靠頁面之間的互鏈,把蜘蛛從几個活着的入口带到其他入口。但如果整個池子只在内部打轉,没有一個對外的接口,新入口的發現速度就會很慢。
站外連結引蜘蛛,關键不在數量
很多人把發外鏈理解成發得越多蜘蛛来得越快,實际操作里更值得關注的是下面几点:
- 連結所在頁面能不能被抓:頁面本身设了 nofollow、需要登入、靠 JS 异步渲染,或者被 robots 挡住,蜘蛛大概率看不到這條連結。
- 連結所在頁面自己有没有被抓過:一個從没被收錄、也没有任何抓取记錄的頁面,它上面的連結對蜘蛛来说等于不存在。
- 連結位置是否稳定:今天在首頁、明天被删掉的連結,價值有限;長期存在的導航、友鏈、頁脚位置更容易被反复走到。
- 主题是否相關:来源頁面和入口頁八竿子打不着,蜘蛛跟着走過来後,對入口頁的判断也更模糊。
- 連結指向的 URL 是否長期有效:外鏈指向的入口頁频繁換域名、換路径,最後變成 404,等于白白浪費這條引導路径。
简單说,一條来自经常被蜘蛛訪問、主题接近、位置稳定的頁面上的連結,作用通常比几十條散落在無人問津頁面上的連結更實在。
几個容易踩的誤区
只開一個来源
全部依赖 sitemap 提交,一旦提交失敗或接口變動,蜘蛛的入口就断了;反過来,只靠外鏈、不做任何主動提交,發現速度也要看运气。两條腿走路更稳。
把連結放在蜘蛛到不了的地方
评论区連結、需要交互才展開的折叠内容、登入後才能看到的頁面——這些位置對人可见,對蜘蛛未必可见。判断方法很直接:用抓取工具模拟一下,看返回的 HTML 里到底有没有這條連結。
入口頁地址換来換去
入口頁 URL 不稳定,等于每次都要让蜘蛛重新認识一遍。如果确實要換,至少让老地址跳轉到新地址,而不是直接丢一個 404。
以為提交了就會马上被爬
提交只是告诉,抓不抓、什么时候抓、抓多深,仍然取决于蜘蛛自己的調度。提交後观察日誌,比反复提交更有意义。
一些可执行的建议
- 给入口頁保留一批長期不變的 URL,作為蜘蛛的固定落点,不要全部用一次性路径。
- 主動提交和外部引導同时做:sitemap 與推送负责覆盖面,稳定的外鏈负责把新入口领進门。
- 在入口頁之間维持清晰、有限层級的互鏈,让蜘蛛從任意一個已知頁面都能走到其他頁面。
- 记錄每次外鏈發布的位置和時間,再對照服務器日誌里的蜘蛛訪問记錄,看哪些来源真的带来了抓取。
- 把精力放在少量稳定来源上,而不是批量铺垃圾連結。
把入口頁想成一扇门:门本身要结實,但更重要的是有人愿意把蜘蛛领到门口。外鏈、提交、互鏈都是引路的動作,缺一环都不致命,只留一环就很脆弱。