搜尋抓取

首次發現與最後抓取:用两個時間字段核對 URL 的發現與保鲜

抓取日誌不只看次數。把每個 URL 的首次出現時間與最近一次抓取時間單獨算出来,能大致判断新頁面的入口是否顺手、老頁面是否仍在被訪問。本文說明时区與爬虫口径的處理、四類頁面狀態的划分、容易誤判的三種情况,以及每周一次的观察节奏。

搜尋抓取

首次發現與最後抓取:用两個時間字段核對 URL 的發現與保鲜

看抓取日誌时,很多人先數次數:這周蜘蛛来了几趟、哪些頁面被訪問最多。次數能說明热度,却不擅長回答两個更實际的問题——新頁面多久後才第一次被看到,以及老頁面最近一次被訪問是什么时候。把這两個時間点單獨算出来,站点的不少判断會清楚一些。

從日誌里算出两個時間

不需要額外工具,只要日誌里有完整的時間戳、URL 和爬虫标识,按 URL 分组後取最早時間和最晚時間即可。做這一步前有几個细节要先處理,否則數字會失真。

  • 时区统一:CDN 與源站日誌的时区常常不同,先換算到同一时区再比較。
  • 爬虫识別:按 UA 與来源網段筛掉普通訪客與其他来源的請求,只保留搜尋抓取部分。
  • 去重口径:带參數的 URL 先归拢,否則同一頁面會被拆成多條记錄,時間点也跟着分裂。

首次出現時間:發現效率的粗略刻度

把日誌中 URL 的首次出現時間,與它真正上线或内容更新的時間對照,可以大致看出發現通道是否顺手。差距小,說明入口明顯、站点地图更新及时;差距大,通常能在几個地方找到原因:新頁面没有内鏈指向、被放在很深的目錄、只存在于列表頁且列表本身很久没被抓、站点地图没有同步新增地址。

這里要留意一種情况:首次出現在日誌里,並不等于蜘蛛第一次知道這個地址,只是第一次成功請求。中間可能有過被拦截、超时或跳轉未落地的尝试。

最近一次抓取時間:保鲜度而不是權重

最近一次抓取時間反映的是近期關注程度,和頁面更新频率、抓取预算、入口數量都有關系。判断时要先给頁面分類:

  • 高频更新頁:新闻、商品、活動頁,間隔明顯拉長时值得查原因。
  • 低频更新頁:简介、帮助文档,間隔長属于正常現象。
  • 几乎不變的頁面:條款、歷史存档,長時間不再訪問也未必是問题。

真正需要動手處理的是“更新频繁且重要,却長時間没有新记錄”的那一類。排查顺序可以先從前面的發現通道看起,再核對接服務器返回是否稳定。

把两類頁面放進四個格子

两個時間点放在一起看,頁面大致落在四種狀態里:

  • 新增且抓得勤:狀態健康。
  • 新增但迟迟没被抓:检查内鏈入口與提交通道。
  • 較老但仍在抓:内容仍有變化,或頁面本身被当作重要入口。
  • 較老且很久没抓:先確認内容是否确實没變,再决定要不要补内鏈或更新内容。

三個容易踩的誤判

時間字段本身不會说话,解释它的口径才决定结论對不對。
  1. 把 CDN 命中当成蜘蛛没来。請求被缓存挡住时,源站可能没有记錄,需要结合邊缘日誌一起看。
  2. 把首次出現直接当成“發現耗时”。跳轉、限速、超时都會推迟成功請求的時間。
  3. 用最近抓取時間的長短给頁面排權重。它只是一個观察指标,不宜反過来当作质量评分。

落地的观察节奏

小站每周導出一次,按上面两個字段做一張简表,记下新頁面的首次出現等待時間、重点頁面的最近訪問日期。连續观察几周後,趋势比單次快照更有價值:新頁面的發現是否變快,改版後重要頁面是否仍被稳定訪問,都能從這两列里讀出来。發現異常时,再回到内鏈、站点地图與服務器响應去逐項核對,而不是直接批量改标题或換内容。