搜尋抓取

蜘蛛的抓取队列:URL 排队、重抓間隔與抓取優先級

蜘蛛手上有自己的待抓取队列,URL 從哪来、按什么顺序排、重抓間隔多長,都會影响頁面被抓的时机。本文拆解抓取队列的组成與排序逻辑,並给出缩短内鏈路径、清理低價值 URL、保持服務器稳定等可操作的做法。

搜尋抓取

蜘蛛的抓取队列:URL 排队、重抓間隔與抓取優先級

很多站長在提交完 sitemap,或者刚發了一條外鏈,就盯着日誌等蜘蛛上门。但蜘蛛並不是随叫随到——它手头有一張待抓取的 URL 列表,也就是常说的抓取队列。你的頁面能不能被抓,取决于它有没有進队列、排在什么位置、以及多久轮到一次。

队列里的 URL 是怎么来的

蜘蛛手上的 URL 来源比想象中杂:

  • 已抓過頁面的歷史记錄,用于判断什么时候该回来重抓;
  • 站内連結,包括導航、正文、列表頁分頁;
  • sitemap 與站点地图索引;
  • 外部連結、重定向跳轉,以及各種提交接口;
  • JS 渲染後新出現的連結,這一部分经常被忽略。

来源越多,不代表队列越短。如果同一個 URL 被重复發現,蜘蛛會做去重,重复發現不會让它来得更快,只是白白占用了發現通道。

队列不是先来後到

抓取队列更像一個不断重排的任務表,而不是排队買票。影响顺序的通常是這几件事:

1. 頁面在站内的位置

离首頁近、内鏈多、被重要頁面指向的 URL,一般會更早被安排。一個只能通過三层分頁才走到、且只有一條入鏈的頁面,等待時間往往長得多。

2. 站点的整体抓取表現

服務器响應快、返回碼干净、很少超时,蜘蛛愿意多给抓取額度。反之,大量 5xx、長時間 TTFB,會让抓取速率下調,队列推進速度自然變慢。

3. 頁面的更新特征

经常更新的頁面會被判定為需要更频繁回訪;長期不動的頁面,回訪間隔會被拉長。這也解释了為什么老頁面改一次内容,可能要等一阵才被重新抓取。

4. URL 的歷史與质量

曾经返回 404、软 404,或者内容高度重复的 URL,重新被重视的难度更大。清理這些 URL,其實是在给队列减负。

重抓間隔:改完内容為什么没動静

抓取队列里有一大部分任務是「重抓」,而不是「首次發現」。重抓間隔没有公開的固定值,它由站点規模、更新频率、服務器能力共同决定。sitemap 里的 lastmod 是一個提示信号,但前提是它得真實——如果每次生成都刷新成当天,這個信号很快就會失效,反而拖慢真正更新的頁面。

把 lastmod 当成「改動日誌」,而不是「生成時間」,它才有參考價值。

让 URL 早些進队列,能做的事其實不多

  1. 缩短重要頁面的内鏈路径,让它出現在首頁、栏目頁或相關文章模块里;
  2. 保持 sitemap 干净,只放该被抓的規范 URL,並能稳定返回;
  3. 收敛參數頁、搜尋结果頁、篩選组合頁,別让它們挤占队列;
  4. 保證服務器稳定,减少超时和 5xx;
  5. 定期检查死鏈和断掉的内鏈,別让蜘蛛走到一半返工。

几個不用指望的事

提交 sitemap 不等于马上抓取,被抓取不等于被收錄,被收錄也不等于有排名。這三件事之間隔着索引判断和排序,任何一步都不是提交動作能决定的。與其反复点提交,不如去看日誌里蜘蛛的抓取频次、狀態碼分布和抓取最多的目錄——那里才看得出队列在你站上是怎样推進的。