SEO 百科

可抓取的 JavaScript

本页目录

可抓取的 JavaScript

可抓取的 JavaScript 指网页里由脚本执行后生成、又处在爬虫能看到的位置上的内容和链接[3]。它和普通的 JavaScript 区别在于,爬虫不用先点一下、滚一下,就能拿到同一份结果。做不到这一点,脚本生成的内容就进不了索引。

内容进不了初始 HTML 的原因

搜索引擎抓取一个网址时,第一步拿到的是服务器直接返回的 HTML。脚本生成的内容,要等页面渲染之后才出现。常见的三种情况会让内容错过第一步:

  • 应用外壳模式,初始 HTML 只有一个空容器,正文全部由脚本填充[3]。
  • 内容写在事件回调里,要点击、滑动或输入之后才出现[3]。
  • 正文用异步请求拉取,首屏 HTML 里没有它[3]。

让引擎执行到内容的做法

Google 把 JavaScript 分成三步处理:抓取、渲染、编入索引[3]。要让内容依次经过这三步,常用下面几招:

  • 把关键内容放在首屏 HTML 里,或改用服务端渲染、预渲染[3]。
  • 链接写成带 href 的标准 <a> 元素,不用点击事件调用路由[2]。
  • 不把主内容藏在需要用户交互之后[3]。

Yandex 提供了开关,站点可以选择让爬虫执行或不执行 JavaScript;不执行时,只有初始 HTML 里的内容会进索引[1]。

渲染队列与等待

脚本网站的内容不是立刻进索引的。网页返回 200 时,Googlebot 会把它放进渲染队列,等资源有空再渲染[3]。等待时间可能是几秒,也可能更长,取决于队列当时的负载[3]。

Google 说明,无头 Chromium 渲染完页面后,会再次解析渲染后的 HTML,把新发现的链接加入抓取队列,并用渲染后的 HTML 给页面建索引[3]。Bing 也提示,把关键内容藏在客户端渲染之后,可能导致内容无法进入索引[2]。

百度在抓取诊断里给了同类提醒:不少商品详情页的价格由 JavaScript 输出,对百度蜘蛛不友好,价格就很难在搜索中应用[4]。诊断工具能看到爬虫实际拿到的那一份内容[4]。

常见误用

只在内链里用脚本跳转,是第一种。爬虫拿不到真实链接,页面就成了孤岛。

另一种是把整站交给客户端渲染,正文、标题、结构化数据全在脚本里生成。渲染队列一慢,新内容进索引的时间就跟着拉长[3]。

还有一种是内容放在交互之后才出现,例如点击展开才显示正文。爬虫不会模拟这些操作,展不开的部分就等于不存在[3]。

附录

参见

参考资料

官方(境外)

  1. 《Indexing pages with JavaScript (β)》,Yandex,2026-10-08 访问。
  2. 《Bing Webmaster Guidelines》,Microsoft Bing,2026-10-08 访问。
  3. 《了解 JavaScript SEO 基础知识》,Google 搜索中心,2026-10-08 访问。

官方(国内)

  1. 《平台工具使用手册(抓取诊断)》,百度搜索资源平台,2020-08-14 更新。

外部链接

无。