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>,链接在解析阶段就断了。 - 认为页面上显示正常,源码就一定正常。
附录
参见
参考资料
官方(境外)
- 《HTML Living Standard》,WHATWG,2026-05-19 更新。
- 《解析》,MDN Web 文档,2025-10-10 更新。
- 《渲染页面:浏览器的工作原理》,MDN Web 文档,2025-11-10 更新。
- 《了解 JavaScript SEO 基础知识》,Google 搜索中心,2026-03-05 更新。
官方(国内)
- 《百度搜索的工作原理》,百度搜索资源平台,2023-12-21 更新。
外部链接
无。