先分清「發現」和「抓取」是两件事
搜尋蜘蛛在入口頁上看到連結,只完成了一步:把這個 URL 记進待抓取队列。至于它會不會马上抓、抓几次、多個入口頁上的同一個 URL 要不要合並處理,取决于後續的去重和調度逻辑。很多人看到入口頁被訪問了,就預設目标 URL 一定會被抓,這两件事最好分開看。
同一個 URL 出現在多個入口頁,通常會被合並
主流搜尋引擎在入队之前一般會做 URL 規范化:协议、域名大小寫、末尾斜杠、會改變頁面内容的參數、锚点等,都可能被归一處理。也就是说,同一批目标 URL 放在十個入口頁上,多數情况下只是给了队列十次「發現该 URL」的机會,而不是让它被抓十次。
- 規范化後完全相同的 URL:一般只保留一份抓取計划。
- 只差排序、追踪碼之類的無關參數:多數會被视作同一個地址。
- 真正不同的 URL(路径不同、内容不同):會各自排队。
什么情况下會出現明顯的重复抓取
- 入口頁给出的 URL 形態不一致,比如 http 與 https、带不带 www、带不带預設參數,被当成不同地址。
- 目标 URL 自身做了多域名或多路径的镜像,又没有 canonical 指向主版本。
- 入口頁每次刷新都生成一批随机參數的連結,抓取队列被這些形態各异的 URL 填满。
- 頁面结构频繁變動,搜尋蜘蛛反复回来核對,短時間内看起来像重复抓取。
這些情况里真正被浪費的是抓取配額,而不是「多發現了一次」本身。
怎么安排入口頁與目标 URL 的對應關系
- 一個目标 URL 固定一個形態。先确定协议、域名和參數規則,所有入口頁统一輸出同一形態。
- 入口頁之間做内容区分。哪怕連結的是同一批 URL,正文、锚文本和分類角度也可以不同,减少成片的近似頁面。
- 控制入口頁與目标 URL 的數量比例。目标 URL 少而入口頁极多时,邊际收益會很快下降。
- 留一份明确的對應清單。记錄哪些 URL 由哪些入口頁给出,方便後續對照抓取情况。
几個容易被誤讀的信号
入口頁日誌里出現多次訪問,不一定說明連結被当成了新 URL,也可能是搜尋蜘蛛在重抓入口頁本身,或者在做缓存校驗。反過来,目标 URL 只被抓過一次,也不代表入口頁没起作用——很多頁面本来就不需要反复抓。判断入口頁有没有價值,應该看目标 URL 是否進入過抓取记錄,而不是看訪問次數多少。
把入口頁当成「降低發現门槛的辅助手段」,而不是保證抓取或收錄的開關,预期會稳一些。
驗證时看什么
可以在服務器日誌里按爬虫 UA 過滤,分別統計入口頁與目标 URL 的請求量、狀態碼和時間分布,再和站点地图、主動推送的提交记錄對照。如果目标 URL 長期没有任何請求记錄,優先检查入口頁里的連結形態是否统一、是否被 robots 規則挡住、以及頁面是否需要脚本渲染才會出現連結。若只是抓取次數偏少但确實被抓過,通常不必急着調整,先观察一到两周的走势再判断。