1. 产品
  2.   Aspose.HTML
  3.   Aspose.HTML FOSS for Python

Python 的 Aspose.HTML FOSS

将 HTML 解析为符合标准的 DOM,应用 CSS,并从 Python 计算样式——免费、开源且纯粹的 Python。

开源 Python 库用于 HTML 处理

Aspose.HTML FOSS for Python 是一个免费、开源的库,用于在 Python 应用程序中处理 HTML 文档。使用单个 git clone https://github.com/aspose-html-foss/Aspose.HTML-FOSS-for-Python.git 命令进行安装,开始将标记解析为文档对象模型,构建和修改元素树,附加 CSS 样式表,解析计算后的样式,并处理 URL 和字符编码——全部使用纯 Python,无需浏览器依赖。

该库公开了一个以标准为导向的 API,围绕 HTMLDocument、Document、Element 和 CSSStyleSheet 构建。使用 HTMLDocument.parse() 解析标记,使用 Document.create_element() 和 append_child() 创建并连接节点,使用 get_element_by_id() 查找元素,通过 CSSStyleSheet.replace_sync() 以及元素级的 style 声明为它们设置样式,并使用 Element.get_computed_style() 读取结果。较低层的构建块——HTML Tokenizer、TreeBuilder、WHATWG 风格的 URL 和 URLSearchParams,以及 detect_encoding() 字节流检测器——在需要直接控制时可用。

Aspose.HTML FOSS 使用 MIT 许可证,纯 Python 实现,要求 Python 3.10 或更高版本。它在 Windows、Linux 和 macOS 上表现完全相同——包括 CI 运行器、Docker 容器和无服务器环境。有关企业产品系列,请参阅 Aspose.HTML — Enterprise Product Family。

HTML 解析和 DOM 操作

  • 使用 HTMLDocument.parse() 解析完整页面,或使用 HTMLDocument.parse_fragment() 解析片段
  • 使用 Document.create_element() 和 append_child() 以编程方式构建文档
  • 使用 Document.get_element_by_id() 查找节点,并通过 Element.get_attribute() 读取标记属性
  • 使用 Element.set_attribute() 设置属性,并通过 Node.text_content 赋予文本
  • 使用 serialise() 函数将任意子树序列化回标记

谁使用 DOM 处理

  • 后端服务在存储前清理或重写用户提交的 HTML
  • 内容管道在大规模下提取或重构页面片段
  • 测试套件在 CI 中断言生成的标记结构

CSS 样式表和计算样式

  • 使用 CSSStyleSheet.replace_sync() 解析样式表文本,并通过 Document.attach_style_sheet() 附加它
  • 通过元素的 style 属性使用 CSSStyleDeclaration.set_property() 设置内联声明
  • 使用 Element.get_computed_style() 解析层叠——特异性、内联与作者规则以及继承——
  • 使用 CSSStyleDeclaration.get_property_value() 读取解析后的值

谁使用样式计算

  • 在发送之前验证有效样式的电子邮件和新闻稿工具
  • HTML 清理程序,需要了解元素实际渲染的样式
  • 开发人员在浏览器外调试层叠和特异性行为

标记器和树构造

  • 直接使用 Tokenizer.tokenize() 或 Tokenizer.tokenize_fragment() 驱动 HTML 标记器
  • 使用 TreeBuilder.run() 进行基于标准的树构建
  • 使用 parse_html() 函数直接将标记解析为树

谁在使用低级解析

  • 检查标记流而非完成树的 Linters 和分析器
  • 在错误标记恢复期间需要自定义错误处理的工具
  • 研究基于标准的 HTML 解析工作原理的教育项目

URL 和字符编码

  • 使用 URL.parse() 和 URL.can_parse() 解析并验证 URL
  • 使用 URLSearchParams 读取和编辑查询字符串 — append()、get()、has()、delete()
  • 使用 detect_encoding() 检测字节流编码(BOM 和内容嗅探)
  • 使用 get_canonical_name() 将编码标签规范化为标准名称

谁使用 URL 和编码工具

  • 必须可靠地解析并去重 URL 的爬虫和抓取器
  • 处理混合编码的遗留文档的摄取管道
  • 在服务器端解析或重写查询参数的服务

构建 DOM 并解析 CSS 级联

创建文档,附加样式表,并读取计算后的样式 — ID 选择器优先于类规则:

from aspose_html.dom import Document
from aspose_html.cssom import CSSStyleSheet
doc = Document()
el = doc.create_element("div")
el.set_attribute("class", "foo")
el.set_attribute("id", "bar")
doc.append_child(el)
sheet = CSSStyleSheet()
sheet.replace_sync(".foo { color: red } #bar { color: blue }")
doc.attach_style_sheet(sheet)
style = el.get_computed_style()
print(style.get_property_value("color"))

内联样式优先

内联声明的特异性高于作者样式表规则:

from aspose_html.dom import Document
from aspose_html.cssom import CSSStyleSheet
doc = Document()
el = doc.create_element("div")
doc.append_child(el)
sheet = CSSStyleSheet()
sheet.replace_sync("div { color: red }")
doc.attach_style_sheet(sheet)
inline = el.style
inline.set_property("color", "blue")
print(el.get_computed_style().get_property_value("color"))

检测字节的字符编码

嗅探原始字节流(包括 BOM)的编码,并获取解码后的文本:

from aspose_html.encoding.detection import detect_encoding
result = detect_encoding(b"\xef\xbb\xbf<p>x</p>")
print(result.encoding)
print(result.confidence)
print(result.text)

常见问题

Aspose.HTML FOSS for Python 使用什么许可证?

MIT License — 商业使用、修改和再分发均被允许;唯一的要求是随大量复制品保留版权声明。

支持哪些 Python 版本,如何安装?

Python 3.10 或更高版本。使用 git clone https://github.com/aspose-html-foss/Aspose.HTML-FOSS-for-Python.git 安装 — 实现是纯 Python,没有本机依赖。

如何将 HTML 解析为文档?

使用 HTMLDocument.parse() 处理完整页面,或使用 HTMLDocument.parse_fragment() 处理部分标记;Document 是用于以编程方式构建树的工厂。

CSS 级联是否正确处理特异性和 !important?

是的 — 计算值遵循选择器特异性,内联声明优先于作者规则,!important 作者规则优先于非重要的内联声明,并且继承从父到子。

该库是渲染页面还是转换为其他格式?

不。当前版本侧重于解析、DOM 操作、CSS 样式计算、布局结构、URL 和编码——不进行格式转换或图像/PDF 渲染。

在解析期间,JavaScript 会自动执行吗?

不。解析从不运行脚本;评估是显式的并且需要通过 JSContext 进行选择加入,模块加载由 ModuleRegistry 和 ModuleLoadPolicy 控制。

  

支持和学习资源

 中文