在python中有效地解析损坏的XML / HTML

时间:2014-01-26 15:10:59

标签: python xml parsing lxml elementtree

我希望能够在Python中有效地解析大型HTML文档。我知道Liza Daly's fastitersimilar concept in the Python's own cElementTree。但是,这些都不能处理破坏的XML,HTML也是如此。此外,该文档可能包含其他损坏的XML。

同样地,我知道像this这样的答案,它们建议根本不使用任何形式的iterparse,事实上,这就是我正在使用的内容。但是,我正在尝试优化我的程序中最大的瓶颈,即解析文档。

此外,我已经为lxml解析器使用SAX样式的目标处理程序做了一些实验 - 我不确定发生了什么,但它彻底导致Python停止工作!不只是抛出异常,而是“python.exe已停止工作”消息弹出窗口。我不知道这里发生了什么,但我甚至不确定这种方法是否真的比标准解析器更好,因为我在互联网上看到的很少。

因此,我的问题是:是否有类似于iterparse的东西,允许我快速有效地解析文档,当文档格式不正确时,不会产生麻烦(IE。已恢复)来自格式不佳的XML)?

1 个答案:

答案 0 :(得分:0)

我会用这个。

https://github.com/iogf/ehp

它比lxml快,它处理破坏的html,如。

from ehp import *

doc = '''<html>
<body>
<p> cool </html></body>'''

html = Html()
dom = html.feed(doc)
print dom

根据尽可能多的HTML结构构建AST。 然后你可以处理AST。