网站收录

前端渲染的页面被收录成空壳:先看服务端返回了什么

有些页面能被抓取,索引里却只剩导航和标题,正文一片空白。这类情况多半不是没抓,而是抓到的 HTML 里本来就没有正文。本文按查看响应正文、对比渲染前后、检查拦截规则、调整输出方式的顺序,梳理一套可执行的核对流程。

网站收录

前端渲染的页面被收录成空壳:先看服务端返回了什么

有些页面在搜索结果里能看到标题,点进去却和预期对不上;在索引状态里查,页面是已收录,但抓取到的内容只有导航、页脚和一句加载提示。遇到这种情况,先不要急着判断是收录出了问题——多数时候,爬虫确实抓到了这个地址,只是它拿到的 HTML 里本来就没有正文。

抓取和收录不是一回事,先确认你看到的是哪一层

抓取是请求一个地址、拿到响应;收录是把响应里的内容理解、去重后放进索引。前端渲染的站点常见的情形是:第一次请求返回的 HTML 是个空壳,正文由脚本在浏览器里跑出来。搜索引擎会另外安排渲染,但渲染有成本、有延迟,也有失败的可能。如果渲染没跑到,或者跑到一半被规则挡住,进索引的就只剩那个空壳。

核对顺序:先看服务端给了什么

  • 查看响应正文。用命令行请求工具带上常见的爬虫标识访问一次页面,看返回的 HTML 里有没有正文关键词。不放心就再换一个普通浏览器标识对比,两者差异往往就是问题所在。
  • 对比渲染前后。搜索后台的网址检查一般会同时给出原始响应和渲染后的结果,把两者的可见文字提取出来一比,缺了哪一段一目了然。
  • 看抓取日志里的响应体大小。同一类模板的页面,如果日志里记录的响应体明显偏小,多半是正文没进 HTML。
  • 检查拦截规则。CDN、防火墙、限流策略可能对脚本请求、接口请求区别对待。渲染时被拦,正文自然也出不来。

几种常见的空壳来源

正文完全靠客户端渲染

页面的文字、列表、价格都由接口返回后再插入,首次响应里只有一个容器。这是最典型的一类,改动方向也明确:让首屏的核心内容随 HTML 一起返回。

内容藏在交互后面

需要滚动、点击展开、关闭弹窗之后才出现,或者放在懒加载区域里。渲染未必会触发这些动作,抓到的就只有外层框架。

站内跳转不是真正的链接

跳转全靠点击事件实现,没有可被识别为链接的元素。这样的地址既不容易被发现,也谈不上入口深度。

接口或资源被规则挡住

正文接口、脚本文件返回 403 或 404,渲染会中断或降级。这类问题在抓取日志和错误统计里通常留有痕迹。

调整时按这个顺序来

  1. 先把核心正文、标题、关键数据放进服务端直出的 HTML,脚本只做增强。
  2. 确保站内跳转使用标准链接元素,能被正常跟随。
  3. 确认爬虫相关请求没有被 CDN、防火墙或 robots 规则误伤。
  4. 最后再补充提交入口、内链和站点地图,顺序反了容易白忙一场。
不要采用给爬虫单独发一份内容、给用户发另一份内容的做法。短期看似有效,长期是风险,而且很难维护。

改完之后怎么验证

重新用同样的方式抓一次,看响应正文里的可见文字是否包含核心段落;再打开网址检查对比渲染结果;然后观察一段时间的索引状态变化。这里不承诺收录速度,只把抓到的 HTML 里有没有正文这件事确认清楚。

收录是结果,抓取到什么才是前提。把服务端输出这一层理顺,后面关于 URL 规范、重复内容、入口深度的整理才有意义。