使用python和lxml从大型HTML文件中解析和提取信息

时间:2014-06-10 15:23:53

标签: python html xpath

我想解析大型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文件?

1 个答案:

答案 0 :(得分:1)

如果文件非常大,您可以使用iterparse并添加 html = True 参数来解析文件而无需任何验证。 您需要手动为xpath创建条件。

SELECT 
 PERMIT.CODE,
 PERMIT.ID2,
 PERMIT.ID1,
 PERMIT.ID3,
 SUM(case when ITEM.DESC <> 'Late Fee' then ITEM.FEE end) AS TotalFee,
 SUM(case when ITEM.DESC <> 'Filing Fee' then ITEM.FEE end) AS Fee
FROM PERMIT JOIN ITEM
ON PERMIT.CODE = ITEM.CODE
AND PERMIT.ID1 = ITEM.ID1
AND PERMIT.ID2 = ITEM.ID2
AND PERMIT.ID3 = ITEM.ID3
GROUP BY PERMIT.CODE, PERMIT.ID2, PERMIT.ID1, PERMIT.ID3

来源:http://baraujo.net/blog/?p=81