SEO 百科

HTML 解析

本页目录

HTML 解析

HTML 解析把 HTML 源码转成文档对象模型,浏览器和搜索引擎都要先走这一步,才能读到页面上的文字与链接[1]。它决定了后面所有环节的输入,解析出什么,渲染和收录就只能用什么。看这一篇要抓住两件事,解析器对错误标签有容错,以及流式解析遇到阻塞脚本会停下。

从字节到文档树

解析分两个阶段。WHATWG 的规范写明,输入是一串码点,先经过标记化,再进行树的构建,输出是一个 Document 对象[1]。

标记化把字符切成标记。开始标签、结束标签、属性名和属性值各自成为标记[2]。

树构建把标记连成节点。节点按标签的嵌套关系连接,形成文档树[3]。

流式解析是它的重要特征。浏览器不必等整份文件下载完,收到第一个数据分块就开始解析[3]。

容错与自动补全

HTML 解析器对错误标签有容错。规范为语法不完全正确的文档也定义了处理规则,错误点会被标为解析错误,但解析继续[1]。

补出来的结构可能和源码不同。规范专门列了一组常见情形,例如首尾标签错位的 <b><i></b></i>,解析器会按自己的规则重排[1]。

表格是另一个高发区。表格里出现不该有的标记时,解析器按表格规则处理,位置可能被移到表格外面[1]。

容错不等于无损。页面上看着正常,文档树却可能少了层级,或者多了源码里没有的节点。

阻塞脚本与解析中止

解析遇到脚本会停。<script> 不带 async 或 defer 时,它会阻塞渲染,并暂停 HTML 解析[3]。

暂停期间,后面的标记还没被读入。脚本如果在这时读取页面结构,只能读到它之前的部分。

脚本还能改写正在解析的文档。规范举了 document.write 这个例子,它插入的标记会被并入同一轮解析[1]。

预加载扫描器能减轻等待。它在主解析器之外提前发现并请求脚本、样式和图片[3]。

对抓取与收录的影响

爬虫先解析再发现链接。Google 说明,Googlebot 会解析 HTML,从 <a> 的 href 属性里读出网址并加入抓取队列[4]。

链接必须写成可解析的形式。用脚本跳转代替 href,解析阶段就找不到目标网址[4]。

内容要出现在源码里。标题做成图片、正文由脚本事后插入,解析阶段都读不到。

百度把收录的前半段概括为抓取网页、建立索引数据库,再把库里的数据展现给用户[5]。解析是抓取之后、建库之前的那一步。

常见误用

  • 依赖容错把结构写乱,解析出的层级和设计意图不符。
  • 在 <head> 里放阻塞脚本,拖慢首屏和解析。
  • 用脚本跳转代替 <a href>,链接在解析阶段就断了。
  • 认为页面上显示正常,源码就一定正常。

附录

参见

参考资料

官方(境外)

  1. 《HTML Living Standard》,WHATWG,2026-05-19 更新。
  2. 《解析》,MDN Web 文档,2025-10-10 更新。
  3. 《渲染页面:浏览器的工作原理》,MDN Web 文档,2025-11-10 更新。
  4. 《了解 JavaScript SEO 基础知识》,Google 搜索中心,2026-03-05 更新。

官方(国内)

  1. 《百度搜索的工作原理》,百度搜索资源平台,2023-12-21 更新。

外部链接

无。