做收錄核對时经常會遇到這样一種情况:日誌里明明有蜘蛛訪問记錄,狀態碼也是 200,但過一两周去查索引,這個 URL 依然不在。抓取和收錄本来就是两件事,抓取只說明蜘蛛把内容取走了,是否建索引還要看内容质量、重复程度、站点整体信号。把两者混為一谈,很容易得出“蜘蛛已经来了,收錄只是時間問题”的错誤结论。
為什么要做交叉核對
日誌记錄的是蜘蛛来過几次、拿到了什么响應;索引資料记錄的是最终留下了哪些地址。這两份資料的口径、時間、粒度都不一样,直接對比很容易得出错誤结论。交叉核對的目的不是找出一個“正确數字”,而是找出那些抓了多次却始终没進索引的 URL,把它們当成一批样本来分析。
第一步:先把两份資料的口径對齐
時間窗要對齐
索引有延迟,今天的抓取不可能反映在今天的索引資料里。核對时通常要留出缓冲期,或者只分析那些在抓取後经過較長時間仍未出現的 URL。
URL 要對齐
日誌里的地址往往带着參數、大小寫、结尾斜杠的差异,索引資料里是归一化之後的版本。核對前先做一轮 URL 归一,否則會把同一個頁面当成两個,得出“抓了很多却没收錄”的假象。
第二步:给“未被收錄”的 URL 分组
- 内容偏薄,或與其他頁面高度相似的模板頁;
- 被 noindex、robots、canonical 外指的地址;
- 正文依赖 JS 渲染,蜘蛛拿到的是空壳;
- 參數、排序、篩選生成的地址;
- CDN 或缓存返回了舊版本甚至错誤版本。
分组之後往往會發現,問题通常集中在少數几類模板上,而不是均匀散落在全站。
第三步:抽查响應内容,別只看狀態碼
狀態碼 200 不代表蜘蛛拿到的是你预期的内容。抽查几個未收錄的 URL,看看蜘蛛视角下返回的 HTML 里到底有什么:正文是否存在、标题是否是模板化的、有没有大段的導航和广告。可以结合抓取工具的渲染结果,和浏览器里看到的内容做對比。
抓取是入场券,收錄是评审结果。日誌只能證明“来過”,不能證明“留下了”。
一個可执行的核對顺序
- 選定時間窗,導出该窗口内被抓取的 URL 列表;
- 做 URL 归一,去重;
- 與目前索引資料取差集,得到“抓了未收錄”的样本;
- 按頁面模板分组,統計各類占比;
- 對占比最高的一類做内容抽查,確認是质量問题、信号冲突還是抓取版本問题;
- 改完之後不要只看數字變化,繼續用同一套流程复测。
這套流程不會立刻提高收錄量,但它能帮你把“為什么没收錄”從一個模糊的感觉,變成几類可以分別處理的具体原因。