网站收录

蜘蛛抓到的 HTML 和你看到的页面不一样:哪些情况会挡住收录

搜索引擎抓取时先拿到服务器返回的 HTML,渲染是之后的环节。如果正文、内链或关键信息只在浏览器里才出现,抓取端可能只看到一个空壳。下面梳理几类常见情况、自查方法和可以落地的调整思路。

网站收录

蜘蛛抓到的 HTML 和你看到的页面不一样:哪些情况会挡住收录

同一个 URL,用户在浏览器里看到的是完整页面,搜索引擎抓取程序第一次拿到的却可能只是几行 HTML 骨架。这不是抓取出错,而是抓取和渲染本来就是两个环节:先取回服务器返回的响应,再排队把页面渲染出来看一遍。问题在于,很多页面质量判断在第一环节就已经开始了。

抓取端拿到的东西,取决于服务器返回了什么

请求到达时,服务器返回的 HTML 里有什么,抓取端就先看到什么。如果主体内容、内链、结构化信息都依赖 JavaScript 在浏览器里执行后才插入,第一轮抓取拿到的就接近空白。搜索引擎通常会安排渲染,但渲染要排队、要消耗资源,对站点的抓取安排并不友好。

常见的几类情况

正文由前端脚本生成

列表页、详情页的数据通过接口请求后再插入 DOM。这类页面在浏览器里一切正常,但源码里没有对应文字,抓取端如果只做第一轮解析,就很难判断页面主题。

图片或内容懒加载

滚动到视口才加载的大段文本、评论、图集,滚动前只是空的占位元素。抓取程序一般不会像人那样一路滚到底,看不到的内容等于不存在。

登录、地区或权限限制

未登录时返回登录提示,或按 IP 返回不同版本。抓取端往往拿不到登录态,看到的可能是提示语而不是正文。

弹窗和浮层

Cookie 同意、订阅弹窗、App 下载引导覆盖在正文之上。有些实现方式会把页面主体包进隐藏容器,抓取端读到的就是被折叠的内容。

个性化与 A/B 测试

同一 URL 对不同用户返回不同模块,或长期停留在测试版本。内容不稳定时,抓取端多次拿到的结果可能互相矛盾,页面定位也跟着模糊。

怎么判断自己有没有这个问题

  • 用“查看网页源代码”而不是开发者工具的 Elements 面板,看第一次响应里到底有没有正文。
  • 在浏览器里禁用 JavaScript 刷新页面,观察还剩多少可读内容。
  • 用搜索平台的 URL 检查工具,对比“已抓取的 HTML”和“渲染后的 HTML”。
  • 翻服务器日志,看抓取程序请求的 URL 返回了什么状态码、多大字节数。
  • 检查内链是否用可抓取的 a 标签,而不是点击事件绑定的 div。

可以落地的调整

  1. 把标题、正文主体、分类导航等关键内容放到服务端渲染或预渲染输出里,脚本只负责增强。
  2. 懒加载尽量用真正的 img 和 src,配上合理占位,不要用背景图或纯脚本替换。
  3. 重要链接保持 a 标签结构,脚本跳转只作为补充。
  4. 弹窗不要包住正文容器,也不要默认用 display:none 隐藏内容。
  5. 需要登录才能看的内容,评估是否值得让抓取端访问;确实不该收录的,用合适的方式说明。

这些调整不会直接换来收录,但能让抓取端第一次就把页面看清楚,后面的质量判断才有依据。

抓取端看到的版本,才是它评判页面的起点。用户看到的再漂亮,第一轮 HTML 里没有的东西,就等于没写。