【发布时间】:2021-12-26 18:07:44
【问题描述】:
我需要使用 Python 3.8 xml 包解析 HTML 文件。这一定是可能的,因为某些xml.etree.ElementTree 方法具有将"xml" 或"html" 作为值的参数,但我找不到它是如何完成的示例。
当我尝试解析 HTML 文件时出现异常:
htmlRoot = etree.ElementTree.parse(filepathname).getroot()
解析器在遇到 HTML 实体时会抛出“未定义实体”异常。我认为这是因为 HTML 实体是预定义的,而 XML 实体不是。
正如语句所示,我使用的是默认解析器。也许有一个 HTML 解析器,但我还没有找到。我什至不确定是否有 其他解析器,或者我必须自己动手。
我不想使用 Python 的 html 包,因为我需要像 xml.etree 提供的那样遍历完整的解析树。 html 包不能那样工作。
我找到了使用 lxml 包解析 HTML 的示例,但 lxml 不是标准 Python 配置的一部分。对于不懂 Python 并且需要“即插即用”应用程序的同事来说,这将是一个问题。
【问题讨论】:
-
ElementTree 是一个 XML 工具。它不能用于处理任意 HTML。
标签: python html xml elementtree