Wea*_*Fox 11 html python xml beautifulsoup
我写了一个python脚本来处理大量下载的网页HTML(120K页).我需要解析它们并从那里提取一些信息.我尝试使用BeautifulSoup,这很容易和直观,但似乎运行速度非常慢.因为这是必须经常在弱机器上运行的事情(在亚马逊上),速度很重要.python中是否有一个HTML/XML解析器,它的工作速度比BeautifulSoup快得多?或者我必须采用正则表达式解析..
流式(或SAX 样式)解析器比 DOM 样式解析器更快。您的代码在文档中出现时一次传递一个元素,尽管您必须自己推断(并跟踪)它们的关系,但您只需要维护定位所需数据所需的状态即可。作为奖励,一旦您找到感兴趣的内容,您可以提前终止解析,从而节省处理文档其余部分所需的时间。
相比之下,DOM 风格的解析器需要构建整个文档的完整可导航对象模型,这需要时间(和内存)。DOM 样式解析器通常构建在流解析器之上,因此在其他条件相同的情况下,它们会比它们使用的流解析器慢。
Python 有一个名为 的 HTML 流式解析器html.parser。根据识别要提取的数据的难度,实际编写流式解析器来进行抓取可能会很复杂,因为 API 是一种从内到外的方式,与您习惯的文档思考方式不同。因此,选择一个更易于使用的解析器可能是值得的,即使它在运行时速度较慢,因为有效的简单代码通常比有错误的复杂代码更好。
从令人抓狂的角度来看,用 C 编写的解析器(例如lxml)将击败几乎任何用纯 Python 编写的解析器,无论它采用什么方法,因此这可能是获得所需速度的一种方法。(事实上,现在,BeautifulSoup 使用lxml它作为默认解析器。)
| 归档时间: |
|
| 查看次数: |
9490 次 |
| 最近记录: |