站点运营

站点运营:前端渲染自查,别让蜘蛛抓到的是一张空壳页面

浏览器里看着完整的页面,蜘蛛抓到的源码里可能只有一个空 div 和一段加载提示。本文介绍三种低成本的自查方式,梳理常见的前端渲染坑,并给出服务端直出、预渲染、真实链接等处理思路,帮助站长确认页面主体内容是否真的能被抓取到。

站点运营

站点运营:前端渲染自查,别让蜘蛛抓到的是一张空壳页面

很多站长都遇到过这种情况:在浏览器里打开页面一切正常,标题、正文、图片都在,但蜘蛛抓到的 HTML 源码里只有几行 div 和一句加载中的提示。访客看到的是渲染后的结果,蜘蛛收到的是渲染前的骨架,两者并不是一回事。

当页面主体内容依赖 JavaScript 在浏览器端生成时,搜索引擎需要额外执行脚本才能看到内容。这个过程不是必然失败,但会增加成本,也会放大不确定性。对站点运营来说,把这件事提前查清楚,比事后反复猜测为什么页面不收录要省力得多。

一、先确认蜘蛛拿到的是什么

不用复杂工具,三种方式就能看出大概:

  • 查看源代码:在浏览器里按 Ctrl+U,或者用 curl 拉一次页面,看返回的 HTML 里有没有正文文字。如果只有脚本引用和容器标签,说明内容是后渲染的。
  • 禁用 JavaScript:在浏览器开发者工具里关掉 JS 再刷新,页面如果变成大片空白或只剩导航,说明主体内容强依赖脚本。
  • 渲染结果对比:主流搜索平台都提供抓取或渲染结果的查看入口,把原始 HTML 和渲染后的 HTML 对比一下,差异越大越值得处理。

二、哪些写法容易让页面变成空壳

  • 整站使用前端路由,所有页面共用一份 HTML 模板,正文靠接口返回后再拼进 DOM。
  • 内容接口需要登录态或特定请求头,蜘蛛请求时拿不到数据,只能得到空结果。
  • 列表和分页链接用点击事件模拟跳转,源码里没有可跟随的 a 标签。
  • 图片和正文采用懒加载,首屏之外的内容在未滚动时根本不存在于 DOM 中。
  • robots.txt 里屏蔽了 JS 或 CSS 文件,渲染时脚本和样式缺失,页面结构错乱。

其中最后一条最容易被忽略。为了让日志干净,有人顺手把静态资源目录屏蔽掉,结果渲染环节直接缺了脚本,反而帮了倒忙。

三、可以怎么处理

  1. 关键内容服务端直出:标题、正文、价格、发布时间这类核心信息,尽量在首次响应里就出现在 HTML 中,交互部分再交给脚本处理。
  2. 引入预渲染或服务端渲染:内容型站点用静态生成或服务端渲染是性价比较高的方案,改动集中在构建流程或中间层,不必重写整个前端。
  3. 把导航链接写成真实的 a 标签:栏目、列表、分页、面包屑的跳转地址写进源码,蜘蛛才能顺着链接继续走下去。
  4. 合理放行资源:确认 robots.txt 没有挡住渲染所需的脚本和样式文件,同时核对接口返回的头部有没有意外的 noindex。
  5. 保留一份兜底内容:即使用户端渲染,也建议在初始 HTML 里保留最基本的说明文字和站内链接,让页面在脚本失败时仍然可读。

四、处理完记得回头看日志

调整之后,观察几天服务器访问日志或抓取统计,看看目标地址的抓取次数、返回状态码和抓取到的字节数有没有变化。如果字节数长期很小,往往意味着蜘蛛仍然只拿到骨架。这个反馈比任何主观判断都更可靠。

把内容放在 HTML 里,是让页面被理解和被发现最省事的方式。渲染技术可以不断演进,但不要让核心内容成为脚本的附属品。