你的网站是不是被百度“视而不见”了?
你发完新文章,等了三天,百度搜索结果里还是没影儿?
点开自己网站的源代码一看——<div id="app"></div>干干净净,正文一个字没有。
别急着怀疑百度,先看看你页面里的 JS 是不是在“替你藏内容”。
百度到底能不能抓取JavaScript内容?
能,但很挑。
百度蜘蛛确实会执行 JS,但它不是 Chrome,也不装扩展,更不等你加载完所有接口。
它像一个赶时间的实习生:打开页面 → 看到 JS → 尝试跑一跑 → 卡住或超时就直接走人 → 最后只交回半成品 HTML。
那些依赖 useEffect 拉数据、靠路由懒加载、或者要滚动才触发渲染的页面,它大概率只记住了 <title> 和页脚。
为什么你的JS网站可能不被收录?
因为百度不是“边看边渲染”,而是“先抓,再排,最后试”。
它把 URL 放进渲染队列,等空闲资源来处理;
它对单个页面的 JS 执行有严格时限,复杂逻辑直接跳过;
它不会模拟用户点击、不会等轮播图切到第三张、也不会帮你点开“展开详情”。
之前有个招聘网站,职位列表全靠 JS 请求后插入 DOM,百度抓到的永远只有“正在加载中…”那行文字——连岗位名称都没看见。
如何判断百度是否抓取了你的真实内容?
别靠猜,用工具实测。
打开 百度搜索资源平台(就是你天天登录的那个站长后台),进「URL检测」→「抓取并渲染」,粘贴你的链接。
重点看两处:
- 渲染后的 HTML 里,有没有你写的文章第一段?有没有商品标题和简介?
- 如果全是
<div id="root"></div>里面空空如也,或者只有一堆data-v-xxxx的占位符,说明百度根本没看到你想让它看的内容。
顺手按Ctrl+U看一眼网页源代码——如果你自己都搜不到关键词,爬虫更不可能。
确保百度抓取的3个核心方法
别指望爬虫为你妥协。你得让页面对它“友好一点”。
方法一:服务端渲染(SSR)或静态生成(SSG)是首选
用 Next.js(React)、Nuxt(Vue)、或者 VitePress(轻量文档站)这类工具,让服务器直接吐出带内容的 HTML。用户打开快,百度一抓就有料。
一个做行业报告的团队,把 React + CSR 站点换成 Next.js 后,首页关键词自然流量明显提升,新报告上线当天就被收录。
方法二:动态渲染——给百度蜘蛛开个“快速通道”
如果你暂时没法重构,可以在 Nginx 或 Node 中间层加一层判断:识别 User-Agent 是 Baiduspider,就用 Puppeteer 实时渲染,返回完整 HTML;其他访客照常走前端路由。
这招不完美,但比干等爬虫强——至少它能看到内容。
方法三:关键信息“兜底”写进 HTML
哪怕只是首段摘要、H1 标题、产品主名称,在 index.html 或服务端模板里硬编码进去;
再配合 <noscript> 写一句“本文介绍XX技术的三个实战误区”,至少留个锚点给爬虫抓。
这不是最优解,但能救急。
这些关于JS SEO的坑,你一定要避开
有些“土办法”,真用了反而害自己。
- 别把关键词塞进
display: none的 div 里,或者用color: white盖在白背景上——百度早就不吃这套了。 - 别以为加个
<meta name="robots" content="index, follow">就万事大吉,它管不了 JS 渲染时机。 - 别迷信“Vue Router 默认 history 模式=自动 SEO”,没服务端配合,百度根本不知道
/article/123这个地址该返回什么内容。
之前有家知识付费站,所有课程页都靠前端路由跳转,结果百度索引的全是/首页,连课程分类页都找不到。
除了抓取,JS还会影响哪些SEO因素?
能被抓到,不等于能排好。
JS 文件太大,首屏加载慢,直接影响百度的“最大内容绘制”(LCP)得分;
交互逻辑太重,用户点按钮卡顿,首次输入延迟(INP)就亮红灯;
更隐蔽的是:用 onClick={() => navigate('/about')} 跳转的链接,百度蜘蛛根本不会当成有效内链去爬——它只认 <a href="/about">关于我们</a>。
导航栏、面包屑、相关推荐,凡是靠 JS 插入的链接,务必补上真实 <a> 标签,哪怕只是隐藏在屏幕外。
今天下班前就能做的紧急检查清单
现在就打开你电脑里的 百度搜索资源平台(不用新注册,就是你绑过网站的那个):
- 点进「URL检测」→「抓取并渲染」
- 输入你网站最重要的三个页面(比如首页、最新文章页、产品列表页)
- 每个都点「开始抓取」,等结果出来后,直接搜索你页面上的任意一句正文(比如“本方案适用于中小型企业”)
- 如果搜不到——立刻截图发给前端同事,标题就写:“这个页面百度看不到正文,请一起看下 SSR 或静态化方案”