Xpath vs DOM vs BeautifulSoup vs lxml vs other 哪个是解析网页的最快方法?

Posted

技术标签:

【中文标题】Xpath vs DOM vs BeautifulSoup vs lxml vs other 哪个是解析网页的最快方法?【英文标题】:Xpath vs DOM vs BeautifulSoup vs lxml vs other Which is the fastest approach to parse a webpage? 【发布时间】:2012-01-10 15:45:16 【问题描述】:

我知道如何使用 Python 解析页面。我的问题是,在所有解析技术中,哪种方法最快,与其他方法相比有多快?

我知道的解析技术有Xpath、DOM、BeautifulSoup,以及使用Python的find方法。

【问题讨论】:

选择一个网页。使用timeit 模块来测试各种机制在解析您选择的源代码时的执行时间。报告哪个最快。 哈哈,我现在想,因为我想知道 x86 和 x64 的解析性能会有多大差异;) 【参考方案1】:

http://blog.ianbicking.org/2008/03/30/python-html-parser-performance/

【讨论】:

看来 lxml 是最快的,现在我明白为什么 IBM 推荐 lxml 了。非常感谢 :) BS 是否设置为使用 lxml 作为引擎?【参考方案2】:

lxml 是用 C 编写的。如果您使用 x86,最好选择它。 如果我们谈论技术,那么 Xpath 和 DOM 之间没有太大区别——它是非常快速的方法。但是如果你在 BeautifulSoup 中使用 find 或 findAll,它会比其他的慢。 BeautifulSoup 是用 Python 编写的。这个库需要大量内存来解析任何数据,当然,它使用 python 库中的标准搜索方法。

【讨论】:

说得好,C 编写的 lib 总是比纯 Python 模块快得多。感谢更新 lxml 是用 C 编写的。想知道你为什么提到 x86。是不是像 x64 中的某些东西可以比 lxml 表现得更好,如果是,那么是哪一个,为什么? x86 或 x64 在这种情况下没有任何区别。我的意思是其他平台,例如 SPARC 或 ARM :) aaw okies,这对我来说不是问题 :)

以上是关于Xpath vs DOM vs BeautifulSoup vs lxml vs other 哪个是解析网页的最快方法?的主要内容,如果未能解决你的问题,请参考以下文章

XPath child :: * vs child :: node()

Android:DOM vs SAX vs XMLPullParser 解析?

虚拟DOM(Virtual Dom) VS 影子DOM(Shadow Dom)

JS:Html事件处理程序 vs DOM0级事件处理程序 vs DOM2级事件处理程序

querySelectorAll vs NodeIterator vs TreeWalker - 最快的纯JS平面DOM迭代器[关闭]

JS 中的全局变量 vs 本地存储 vs DOM 中的值,哪个更高效? [关闭]