很多站点把内容交给 JavaScript 渲染,用戶在浏览器里看着正常,但蜘蛛拿到的初始 HTML 里可能只有几行框架代碼。這種情况不一定會让頁面完全不被抓取,却會让内容、連結和更新信号难以被稳定识別。與其等問题出現再排查,不如把渲染方式和首屏内容纳入常規自查。
為什么蜘蛛可能看到“空壳”
搜尋引擎抓取通常先取回服務器返回的原始 HTML,再决定是否执行頁面脚本。如果正文、内鏈、分頁入口都寫在脚本里,而脚本又依赖接口返回資料,那么抓取過程就可能出現几種情况:脚本没有执行、接口被 robots.txt 拦住、資料返回超时,或者执行後只渲染出部分内容。结果就是頁面在抓取视角下顯得空白或残缺。
這不等于頁面一定不會出現在搜尋结果里,但内容不完整會直接影响後續判断。對运营者来说,重点是让關键信息在原始 HTML 中就可见。
自查清單
1. 查看不带脚本的原始 HTML
用浏览器查看網頁源代碼,或者用抓取工具模拟蜘蛛請求,關閉 JavaScript 後再看返回内容。關注三件事:正文是否出現、主要導航和内鏈是否是真正的 a 标簽、分頁或栏目入口是否存在。
2. 检查内鏈是否依赖点击事件
- 栏目入口是否寫成 onclick 跳轉,而不是可抓取的連結;
- “加载更多”是否可以退化為普通分頁連結;
- 移動端菜單在原始 HTML 中是否有對應連結。
3. 客戶端路由與入口地址
單頁應用常用前端路由切換頁面,地址栏變化但服務器只返回同一個 HTML 文件。如果每個栏目或内容頁没有獨立、可訪問的 URL,蜘蛛就很难把它們当作不同頁面處理。可以检查前端路由是否支持直接輸入地址訪問,並返回對應内容。
4. 懒加载與折叠内容
图片懒加载一般不影响主要判断,但如果正文段落、表格、评價或列表也等到滚動才加载,抓取时就可能只拿到一部分。折叠区域如果只寫在脚本里,同样容易被忽略。關键内容尽量放在預設可见的 HTML 中。
5. 接口是否被規則挡住
有些站点為了减少無效抓取,會在 robots.txt 里屏蔽接口路径,但頁面内容恰恰由這些接口提供。检查被屏蔽的路径里,是否包含渲染正文所必需的請求。如果有,需要重新评估規則范围。
處理思路與取舍
- 優先让正文、标题、主要内鏈在原始 HTML 中呈現,交互效果可以後續叠加;
- 對确實依赖脚本的頁面,考虑服務端渲染或预渲染,至少保證返回内容完整;
- 分頁、篩選、加载更多提供可点击的地址,避免只依赖按钮事件;
- 定期抽查重要栏目和内容頁的抓取视角,而不是只看用戶视角。
渲染方式不必追求复杂,關键是让内容有稳定的获取路径。蜘蛛能讀到什么,很大程度上取决于服務器返回的第一份 HTML。把這部分整理清楚,再谈内容更新和栏目运营,往往會顺利很多。
提醒:不同搜尋引擎對脚本执行的支持程度不同,以上自查只能帮助减少信息缺失,不能保證收錄结果。建议结合服務器日誌和抓取工具的實际返回内容来判断。