蜘蛛抓取一個 URL 之前,先要知道這個 URL 存在。這一步叫 URL 發現,它决定了新頁面是被几小时内抓走,還是躺在那里几周都没有動静。把發現环节拆開看,實际起作用的主要是三條路径:站外連結、Sitemap、站内連結。它們並不是互相替代的關系,覆盖范围和生效速度差別很大。
外鏈:出現得最早,但不由你控制
外部頁面上的連結通常是最先被蜘蛛看到的信号。你自己站里還没發布,合作方或论坛里已经贴了地址,蜘蛛顺着那條連結就進来了。問题在于,這條路径的节奏完全掌握在對方手里:對方頁面多久被抓一次、連結是否带 nofollow、頁面本身是否被索引,都會影响這個入口能不能派上用场。
因此外鏈更适合当作加速信号,而不是主力通道。稳妥的做法是确保站内路径同时也能發現這個 URL,外鏈只是让它更早一点被看到。
Sitemap:适合批量、适合新站、适合缺少内鏈支撑的頁面
Sitemap 的價值在于把清單直接交给蜘蛛,不依赖它自己一层层爬。以下几種情况尤其适用:
- 新站,内鏈结构還没成型;
- 一次性上线几十上百個頁面,靠内鏈传递太慢;
- 頁面本身很难被站内連結到達,比如活動頁、落地頁、附件頁。
Sitemap 並不等于提交就抓。它只负责告知存在,抓不抓、什么时候抓,仍取决于服務器响應质量、頁面本身是否有足够内容、以及站点整体的抓取节奏。把大量低價值 URL 塞進 Sitemap,反而會稀释里面真正重要的那部分。
内鏈:最慢但最稳的一條路
内鏈是唯一完全由自己掌控的入口。蜘蛛抓到一個頁面,會顺着頁面里的連結繼續走,只要連結是普通 a 标簽、指向可抓取的 URL,這條路就是通的。它的缺点是慢:新頁面需要先被父頁面連結,父頁面還要被重新抓取一次,新 URL 才能传出去。层級越深,传递過程越長。
實际操作中,把新頁面挂在已有且抓取频繁的列表頁、聚合頁或首頁的某個模块下,通常比單纯提交 Sitemap 更快见效。
三種入口失效时分別是什么样子
- 外鏈失效:對方頁面被删、連結加了 nofollow,或者整站長期不被抓,連結形同虚设,而你在自己後台看不出任何異常。
- Sitemap 失效:文件格式出错、里面的 URL 返回 404、超過大小限制却没有分片,或者抓取路径被 robots.txt 挡住,蜘蛛讀不到清單。
- 内鏈失效:連結由 JS 動態生成而蜘蛛没有执行、被 onclick 事件替代,或者指向的 URL 被 robots.txt 屏蔽,頁面在站内就成了没有入口的孤岛。
怎么驗證發現鏈路是通的
- 在服務器日誌里搜尋目标 URL,確認是否有蜘蛛的訪問记錄;
- 查看该次訪問的来路,判断蜘蛛是從哪個入口進来的;
- 確認頁面返回的狀態碼是 200,並且内容不是空的壳;
- 如果几天内没有任何记錄,先排查 Sitemap 是否可正常訪問、内鏈是否真的輸出為可点击連結。
按站点情况搭配使用
新站或者栏目改版期間,Sitemap 加内鏈的组合更實用;已经有稳定抓取节奏的站点,新的重要頁面優先挂内鏈,外鏈作為补充。三條路一起走,任意一條出問题时,URL 仍然有机會被發現。
發現只是第一步。蜘蛛知道了 URL,接下来還要经歷排队、請求、解析和入库,中間任何一环出問题,頁面都不會進入索引。