蜘蛛發現一個連結之後,並不會立刻抓取。它會把 URL 放進待抓队列,再按自己的調度逻辑决定先後顺序。理解這個排序,比反复提交連結更能解释“為什么這個頁面几天就抓了,那個頁面几周没動静”。
待抓队列不是先来後到
把待抓队列想象成一個不断變化的清單:里面既有刚發現的新 URL,也有上一轮没抓完、需要回訪的舊 URL。蜘蛛會综合几個信号给它們打分,分數高的先抓。所以同一批新連結,有的几分钟内就被抓走,有的要等上几天——這不是随机,而是排序结果。
影响排序的几個信号
連結出現的位置和层級
首頁、频道頁上的連結,通常比深层頁面里的連結更早被抓。蜘蛛沿着連結一层层往下走,层級越深,被發現的顺序越靠後,優先級也更容易被後来的新 URL 挤掉。
被連結的次數與来源頁面
一個頁面如果被多個頁面鏈到,或者被站点里本身抓取频繁的重要頁面鏈到,它在队列里的位置通常會靠前。孤立頁面、只在一個角落被提過一次的頁面,往往排在後面。
更新歷史與 lastmod
经常更新、且 sitemap 里 lastmod 记錄准确的頁面,蜘蛛更容易判断“這里可能有新東西”。反過来,長期不變、lastmod 又一直没更新的 URL,回訪間隔會越拉越長。
上一次抓取的结果
上一轮抓取时的响應速度、狀態碼、内容是否有變化,都會影响下一轮排序。响應慢、经常超时的頁面,蜘蛛會主動降低回訪频率,把预算让给更稳定的地址。
想让重要頁面排在前面,可以做這几件事
- 给稳定入口。把重要栏目和頁面放在首頁、频道頁以及站点導航里,让蜘蛛每次来都能從浅层路径走到它們。
- 增加合理的内鏈。在同一主题的頁面之間互相連結,比在頁脚堆一大堆連結更有效。
- 让 sitemap 與實际 URL 保持一致。sitemap 里長期放着已刪除或已重定向的地址,會稀释里面有效 URL 的分量。
- 收敛無效 URL。篩選參數、空结果頁、無限翻頁产生的地址,會在队列里占位,让真正需要抓的頁面排在後面。
- 保持服務器响應稳定。稳定的响應時間和狀態碼,是维持正常回訪节奏的基础。
排队靠後,通常意味着什么
- 入口太深,蜘蛛要走很多跳才能碰到這個頁面。
- 連結由 JS 在客戶端渲染後生成,第一次抓取时看不到。
- 頁面内容長期不變,蜘蛛判断不值得频繁回訪。
- 站点 URL 總量太大,而其中大量是低價值地址。
怎么確認排序是否按预期走
服務器日誌是最直接的依據。挑几個重点頁面,看它們從首次出現在内鏈里,到被第一次抓取之間隔了多久;再對比同层級頁面的抓取間隔。如果某個頁面的間隔明顯偏長,先回头检查入口位置和連結形式,而不是急着重复提交。
待抓队列的排序,本质上是蜘蛛對站点结构和内容變化的综合判断。把入口做浅、把無效 URL 收干净、把响應做稳,比任何提交動作都更持續地起作用。