網站收錄

抓取日誌里有它,索引里没有它:先做一次交叉核對

日誌里能看到蜘蛛訪問,索引里却查不到這個地址,是收錄核對中最常见的困惑之一。本文给出一套交叉核對的做法:先對齐時間窗和 URL 口径,再把“抓了未收錄”的样本按模板分组,最後抽查蜘蛛實际拿到的頁面内容,把模糊的感觉拆成可以分別處理的具体原因。

網站收錄

抓取日誌里有它,索引里没有它:先做一次交叉核對

做收錄核對时经常會遇到這样一種情况:日誌里明明有蜘蛛訪問记錄,狀態碼也是 200,但過一两周去查索引,這個 URL 依然不在。抓取和收錄本来就是两件事,抓取只說明蜘蛛把内容取走了,是否建索引還要看内容质量、重复程度、站点整体信号。把两者混為一谈,很容易得出“蜘蛛已经来了,收錄只是時間問题”的错誤结论。

為什么要做交叉核對

日誌记錄的是蜘蛛来過几次、拿到了什么响應;索引資料记錄的是最终留下了哪些地址。這两份資料的口径、時間、粒度都不一样,直接對比很容易得出错誤结论。交叉核對的目的不是找出一個“正确數字”,而是找出那些抓了多次却始终没進索引的 URL,把它們当成一批样本来分析。

第一步:先把两份資料的口径對齐

時間窗要對齐

索引有延迟,今天的抓取不可能反映在今天的索引資料里。核對时通常要留出缓冲期,或者只分析那些在抓取後经過較長時間仍未出現的 URL。

URL 要對齐

日誌里的地址往往带着參數、大小寫、结尾斜杠的差异,索引資料里是归一化之後的版本。核對前先做一轮 URL 归一,否則會把同一個頁面当成两個,得出“抓了很多却没收錄”的假象。

第二步:给“未被收錄”的 URL 分组

  • 内容偏薄,或與其他頁面高度相似的模板頁;
  • 被 noindex、robots、canonical 外指的地址;
  • 正文依赖 JS 渲染,蜘蛛拿到的是空壳;
  • 參數、排序、篩選生成的地址;
  • CDN 或缓存返回了舊版本甚至错誤版本。

分组之後往往會發現,問题通常集中在少數几類模板上,而不是均匀散落在全站。

第三步:抽查响應内容,別只看狀態碼

狀態碼 200 不代表蜘蛛拿到的是你预期的内容。抽查几個未收錄的 URL,看看蜘蛛视角下返回的 HTML 里到底有什么:正文是否存在、标题是否是模板化的、有没有大段的導航和广告。可以结合抓取工具的渲染结果,和浏览器里看到的内容做對比。

抓取是入场券,收錄是评审结果。日誌只能證明“来過”,不能證明“留下了”。

一個可执行的核對顺序

  1. 選定時間窗,導出该窗口内被抓取的 URL 列表;
  2. 做 URL 归一,去重;
  3. 與目前索引資料取差集,得到“抓了未收錄”的样本;
  4. 按頁面模板分组,統計各類占比;
  5. 對占比最高的一類做内容抽查,確認是质量問题、信号冲突還是抓取版本問题;
  6. 改完之後不要只看數字變化,繼續用同一套流程复测。

這套流程不會立刻提高收錄量,但它能帮你把“為什么没收錄”從一個模糊的感觉,變成几類可以分別處理的具体原因。