我写了一个python脚本,处理大量下载的网页HTML(120K页)。我需要解析它们并从那里提取一些信息。我尝试使用BeautifulSoup,这很容易和直观,但似乎运行速度非常慢。因为这是必须经常在弱机器上运行的事情(在亚马逊上),速度很重要。在python中是否有一个HTML / XML解析器,它的工作速度比BeautifulSoup快得多?或者我必须采用正则表达式解析..
答案 0 :(得分:15)
lxml是一个快速的xml和html解析器:http://lxml.de/parsing.html
答案 1 :(得分:3)
SAX风格的解析器可以比基于DOM的解析器更快。您的代码将获得一系列元素,您必须推断(并可能存储)他们的关系;但是您只需要保持获取所需数据所需的状态。相比之下,DOM风格的解析器需要构建一个可导航的对象模型,这需要时间(和内存),这可能是您不需要花费的。
Python有这样的HTML解析器;它在Python 3中称为HTMLParser
(html.parser
)。但是,根据识别要提取的数据的难度,可能很难成功地解决这种解析问题。如果您要发布一个示例文件并告知您希望从中提取哪些数据,我可能会遇到麻烦。
答案 2 :(得分:0)
尝试:ElementTree可能更快,但我不确定。
xml.etree.ElementTree import ElementTree