網站收錄

初始HTML里没有正文,蜘蛛抓到的可能只是一個頁面外壳

抓取正常、狀態碼 200,頁面却迟迟不進索引,問题有时出在初始 HTML 上。本文說明正文依赖前端渲染、藏在交互之後、以图片或附件形式存在等几種常见空壳来源,给出用 curl 和禁用 JavaScript 自查的方法,以及模板层面的處理顺序。

網站收錄

初始HTML里没有正文,蜘蛛抓到的可能只是一個頁面外壳

很多站点會遇到這样的情况:日誌里蜘蛛来得很勤,狀態碼是 200,抓取频率也不低,但頁面迟迟没有進入索引。排查一圈發現連結有入口、robots 没拦、canonical 也正常,最後問题往往落在一件很基础的事上——蜘蛛拿到的 HTML 里,没有你看到的那些正文。

蜘蛛的第一版頁面,决定了它後續能做什么

搜尋引擎處理一個 URL,通常從服務器返回的初始 HTML 開始。這份 HTML 是判断頁面主题、抽取正文、识別連結的主要依據。如果正文是浏览器执行脚本之後才出現的,蜘蛛最初拿到的就只是一個包含容器和占位符的外壳。它当然可能再渲染一次,但渲染需要排期,並不是每個 URL 都能走到那一步。

換句话说,不是蜘蛛没来,而是它来的时候没看到内容。抓取次數和内容质量是两件事:前者解决“有没有来過”,後者影响“看過之後愿不愿意繼續處理”。

几種常见的“空壳”来源

1. 正文完全依赖前端渲染

服務端只返回一個空的根节点,标题、正文、價格、時間全由脚本請求接口後填充。這種做法對用戶体驗通常没問题,但如果接口資料没有预渲染或服務端渲染,蜘蛛就需要額外执行脚本才能拿到内容。

2. 内容藏在交互之後

折叠面板、标簽頁、点击“查看更多”才加载的段落,如果初始 HTML 中不存在,蜘蛛預設看不到。特別是把核心說明、參數、常见問题都放在這類组件里,頁面在蜘蛛眼里就只剩标题和几行導航。

3. 正文以图片或附件形式存在

把大段文字做成图片、把說明放進 PDF、把關键字段放在需要下载的文件里,都會让文本抽取變困难。图片能被识別,但對内容理解和頁面质量判断的帮助,遠不如可直接讀取的文本。

4. 資料在接口里,頁面没有對應文本

有些站点的商品參數、课程大纲、活動细則只存在于接口返回的 JSON 中,頁面靠脚本渲染成表格。如果接口公開可訪問,内容最终可能出現在渲染後的頁面上,但這一步能不能走到,取决于渲染资源是否被分配。更稳妥的做法是让關键信息同时出現在初始 HTML 里。

怎么確認自己给蜘蛛的是不是空壳

  • 用抓取工具直接請求 URL,不看浏览器,只看返回的 HTML 源碼,搜尋正文中的一句话是否出現。
  • 在浏览器里禁用 JavaScript 後打開頁面,观察還剩下多少可用内容。
  • 查看抓取工具里的 HTML 快照,確認抽取到的正文與頁面實际内容是否一致。
  • 對比同一模板下多個頁面的初始 HTML,看看正文区域是不是都是空容器。

處理顺序上的几点建议

  1. 先改模板,再改内容。空壳問题通常是模板层面的,單個頁面手工补内容解决不了整站問题。
  2. 優先保證關键字段在服務端輸出。标题、主体正文、發布時間、主要分類,先落地到 HTML。
  3. 對依赖渲染的頁面,提供可訪問的資料来源。如果無法服務端渲染,至少保證接口稳定、可抓取、不依赖登入態。
  4. 把折叠内容改為預設展開,或同时輸出一份。用戶不介意多点一下,但蜘蛛没有“点一下”這個動作。
  5. 改完後观察抓取日誌里的响應体大小。如果初始 HTML 從几百字节涨到几 KB,通常說明内容已经進来了。
抓取正常不代表頁面有内容可评估。一個 200 狀態的空壳頁面,在索引评估阶段往往比一個内容完整但更新較慢的頁面更难推進。

最後提醒一点:把内容放進初始 HTML,不等于要做過度堆砌。真正要解决的是“蜘蛛能不能讀到”,而不是“讀到的字够不够多”。内容本身能不能回答用戶的問题,仍然是比收錄更靠前的一道门槛。