【发布时间】:2014-07-31 10:39:28
【问题描述】:
我想解析大型 HTML 文件并通过 xpath 从这些文件中提取信息。为了做到这一点,我正在使用 python 和 lxml。但是,lxml 似乎不适用于大文件,它可以正确解析大小不超过 16 MB 的文件。它尝试通过 xpath 从 HTML 代码中提取信息的代码片段如下:
tree = lxml.html.fragment_fromstring(htmlCode)
links = tree.xpath("//*[contains(@id, 'item')]/div/div[2]/p/text()")
变量 htmlCode 包含从文件中读取的 HTML 代码。我还尝试使用 parse 方法从文件中读取代码,而不是直接从字符串中获取代码,但它也不起作用。由于从文件中成功读取了文件的内容,我认为问题与lxml有关。我一直在寻找其他库来解析 HTML 并使用 xpath,但看起来 lxml 是用于此的主要库。
还有其他 lxml 的方法/功能可以更好地处理大型 HTML 文件吗?
【问题讨论】:
-
您能否更具体地谈谈解析较大文件的问题? 16 MB 不算多(它也不算小,但也不是很大)。你得到什么错误?
-
其实我没有收到错误,python 没有抛出异常,但是对于大于 16 MB 的文件,tree.xpath 没有返回任何内容。我的意思是,我似乎只能从小于 16 MB 的文件中提取信息。
-
etree.iterparse()andetree.iterwalk()有什么帮助吗?看到这个question。