一个快速的Python HTML解析器

问题描述:

我写了一个python脚本来处理大量下载的网页HTML(120K页)。我需要解析它们并从中提取一些信息。我尝试使用BeautifulSoup,它很简单直观,但它似乎运行得非常慢。因为这是必须在弱机器上运行(在亚马逊上)的速度,这一点非常重要。 python中是否有一个HTML/XML解析器,其工作速度比BeautifulSoup快得多?或者我必须求助于正则表达式解析..一个快速的Python HTML解析器

+5

[Keep the pony away ...](http://*.com/a/1732454/554546) – 2012-03-12 16:28:50

+2

我没有在Python中解析HTML的经验,但[这里](http://blog.ianbicking .org/2008/03/30/python-html-parser-performance /)是您可能会发现有用的一些基准测试结果。 – 2012-03-12 16:30:28

+8

[正则表达式和HTML ==失败](http://*.com/a/1732454/554546) – 2012-03-12 16:30:33

LXML是一个快速的XML和HTML解析器:http://lxml.de/parsing.html

+2

的性能比,但是基准测试表明lxml要快得多! – WeaselFox 2012-03-12 17:05:56

+0

要安装:'pip install lxml' – Flimm 2017-05-26 15:35:05

尝试:ElementTree可能会更快,但我不知道。

xml.etree.ElementTree import ElementTree 
+0

我也会提出这个建议......虽然我没有任何数据可以支持与BeautifulSoup – inspectorG4dget 2012-03-12 16:44:25

SAX风格的解析器可以比基于DOM的更快。你的代码被赋予了一系列元素,你必须推断(并可能存储)他们的关系;但你只需要保持尽可能多的状态以获得你想要的数据。相比之下,DOM风格的解析器需要构建可导航的对象模型,这需要耗费时间(和内存),这可能不需要花费。

Python有这样的HTML解析器;它被称为HTMLParser(在Python 3中为html.parser)。根据识别要提取的数据的难度,然而,要成功解决这种解析问题可能非常困难。如果你要发布一个示例文件并且告知你想从中提取哪些数据,我可能会采取一些措施。