日誌里能看到蜘蛛抓取,頁面也返回 200,但在搜尋索引里标题和摘要像空壳,這種情况常被笼统归為“没收錄”。實际上,抓取成功只是請求环节通過,後面還有解析、渲染、内容理解與索引選擇。把這几步混在一起,就容易在错誤的方向上反复調整。
先分清:抓取成功不等于内容被讀到
返回 200 只代表服務器接受了請求。如果頁面依赖 JavaScript 渲染,而渲染所需的脚本、样式或接口被屏蔽、超时,蜘蛛拿到的可能只是一個空容器。此时日誌里有抓取记錄,但内容並没有真正被讀到。
- 查看原始 HTML:正文是直接存在,還是只有占位标簽和脚本。
- 检查 robots.txt:是否誤屏蔽了 JS、CSS 或提供資料的接口路径。
- 確認渲染依赖:是否依赖第三方脚本,而第三方加载不稳定。
- 检查訪問條件:内容是否需要登入、点击或滚動後才出現。
渲染成功,也可能被当作低價值頁面
即便正文能渲染出来,如果主体内容占比低、广告和導航過多,或者同模板頁面高度重复,搜尋系統也可能只抓取不索引。這时問题不在抓取通道,而在頁面质量與索引選擇。
- 首屏可见的正文是否足够,還是需要大量滚動才能看到。
- 核心内容是否被彈窗、浮层或自動播放模块遮挡。
- 同一模板下是否批量生成相似正文,缺少獨立信息。
按顺序排查,別把渲染問题当成收錄問题
- 用抓取工具或日誌確認蜘蛛拿到的 HTML 是否包含正文。
- 對比“原始 HTML”和“渲染後 DOM”,定位正文從哪一步消失。
- 检查 robots、UA 识別、CDN 是否對蜘蛛返回了不同版本。
- 確認内容可见性,必要时改為服務端渲染或预渲染關键頁面。
- 最後再看内鏈入口,避免把渲染失敗誤判為孤岛頁面。
抓取是請求,收錄是理解與選擇。把两者混在一起,排查就會绕圈。
检查时容易忽略的两種差异
一種差异是不同 UA 返回不同内容。有些站点對普通用戶和蜘蛛返回的 HTML 不同,若配置不当,蜘蛛拿到的版本可能缺少正文。另一種差异是缓存。CDN 或頁面缓存可能存了舊版本或空壳版本,蜘蛛每次拿到的都是同一份错誤内容。
- 用相同 UA 測試,對比返回内容是否一致。
- 清理相關缓存,观察下次抓取是否變化。
能落地的調整方向
優先保證關键頁面有稳定的服務端輸出,至少让主体内容在原始 HTML 中可见。對必须依赖 JS 的頁面,确保渲染资源不被屏蔽,並减少首屏對第三方脚本的依赖。如果頁面本身内容單薄,先补充真實有用的信息,再谈索引表現。
索引狀態會随時間和内容變化,處理完一轮後,观察日誌和索引表現,不要期待一次調整就立刻改變。记錄每次改動的日期與观察结果,方便對比。抓取與收錄之間的鏈路較長,按层排查比反复提交更有效。