Gumbo 是 Google 开源的纯 C99 实现的 HTML5 解析库,实现了 HTML5 解析算法,无外部依赖。Gumbo-parser 的目的是为其他工具提供构建块和一些实用库,比如验证器,模板语言,重构和分析工具。

主要特性:

  • 完全符合 HTML5 规范
  • 健壮,可伸缩
  • API 简单,容易被其他语言封装
  • 支持源文件位置和指针定位
  • 支持片段解析
  • 相对轻量级,无外部依赖
  • 通过了所有 html5lib 测试,包括模板标签
  • 通过了从 Google 索引查找的 25 亿个页面测试

其他特性:

  • 执行速度
  • 支持 UTF-8 以外的编码
  • 易改动
  • C89 支持
  • 完全支持 <template> 标签

GitHub 地址:https://github.com/google/gumbo-parser

基础使用:

#include "gumbo.h"

int main() {
  GumboOutput* output = gumbo_parse("<h1>Hello, World!</h1>");
  // Do stuff with output->root
  gumbo_destroy_output(&kGumboDefaultOptions, output);
}