網站收錄

爬虫来過了,收錄却没有變化:用訪問日誌核對抓取與收錄

抓取次數增加不等于收錄结果變化。爬虫訪問日誌只能證明頁面被取走,不能證明頁面已入库或以哪個版本入库。這篇文章给出用日誌、响應内容和索引狀態做對照的排查顺序,帮你判断頁面究竟卡在抓取、渲染還是质量环节。

網站收錄

爬虫来過了,收錄却没有變化:用訪問日誌核對抓取與收錄

不少人看服務器日誌时,看到搜尋引擎爬虫一天来几百次,就預設收錄不會出問题。但抓取和收錄是两件獨立的事:爬虫来了、把頁面取走,只表示這個 URL 進入了待處理队列;至于是否入库、以哪個版本入库、之後會不會被合並或忽略,是後面才决定的。日誌能證明"来過",證明不了"收下"。

訪問日誌能說明什么

把日誌当成一份訪問记錄来讀,它可以回答下面這些問题:

  • 爬虫是否真的請求了這個 URL,而不是只從站点地图里知道它的存在
  • 服務端返回的狀態碼、响應体大小、响應耗时
  • 訪問用的是移動端還是桌面端 UA,是普通爬虫還是图片、视频類爬虫
  • 大致抓取频率,以及這個 URL 是從哪一层被走到的

它回答不了的問题是:頁面有没有進索引、進的是哪個版本、是否被判定為重复或低质。這几項要去索引狀態报告或者 URL 检查工具里看。把两邊的資料放在同一時間轴上,才谈得上對照。

對照排查的三步

第一步:先過一遍狀態碼和响應体

返回 200 但响應体只有几百字节,是前端框架空壳頁面的典型表現。這種情况說明爬虫拿到的是没有被渲染的骨架,正文還在 JavaScript 里。反過来,如果登入頁、错誤頁大范围返回 200,也會让爬虫把無效頁面当成有效頁面带回去。频繁出現的 301、302 需要顺着跳轉鏈看一遍,跳轉层數太多容易在中途被放弃。

第二步:確認抓到的版本是不是你想要的那個

如果站点做了移動适配、動態渲染或者多套模板,同一個 URL 在不同 UA 下返回的内容可能不一样。把日誌里移動 UA 和桌面 UA 的响應大小、請求時間放一起比一比,差距明顯时,就要回到頁面上核對两種版本的實际内容是否一致。

第三步:和索引狀態對齐

用站点地图或 URL 检查工具確認這個 URL 目前處于哪種狀態。"已發現,尚未抓取""已抓取,尚未编入索引""已排除"對應的含义完全不同。把日誌里的抓取時間点與狀態變化時間對齐之後,才能判断是抓了没被處理,還是根本没有進入處理流程。

几種常见的抓了却不收錄

  • 内容與站内已经收錄的頁面高度相似,被合並處理或被判定為重复版本
  • 正文文字太少,關键信息放在图片里或者要点開交互才出現
  • 返回给爬虫的 HTML 與用戶看到的不一致,两邊對不上
  • 该 URL 属于被 canonical 指向其他頁面的舊版本
  • 模板频繁改動,每次抓取拿到的内容差异較大,頁面稳定性差

可以動手調整的地方

  1. 缩小观察范围:日誌只看目标目錄的 URL,把图片、样式、脚本請求過滤掉,否則資料噪音會盖住真實信号
  2. 一次只改一處,改完给它足够的時間再去看資料變化,不要在同一天里连續叠加多個改動
  3. 優先處理入口頁面和栏目模板的問题,它們影响的不只是一個 URL,而是一整批頁面的抓取和入库表現
  4. 让重要頁面靠内鏈保持在較浅的层級,不要只依赖站点地图被發現
抓取记錄只回答"爬虫来過没有"。頁面有没有進索引、進的是不是最新版本,要另找證據。

把日誌当作线索,而不是结论。真正有用的做法是:日誌指出爬虫的行為,索引狀態指出系統的判断,頁面本身决定這两者能否對上。三者不一致的地方,往往就是需要動手的位置。