2010-07-14 63 views
3

我一直在使用BeautifulSoup,但据我所知,库不再被维护。那我该用什么?我听说过Xpath,但还有什么?没有更多BeautifulSoup

+0

“这取决于”。你在寻找一个XML解析器还是一个真实的html解析器? – 2010-07-14 08:35:32

+2

“库不再被维护”。请提供这一说法的证据。 – 2010-07-14 12:18:07

+0

嗯,事情是,我的一个同事告诉我,这个人通常是很了解..但显然不是在这种情况下 – 2010-07-17 18:12:28

回答

13

有一个bugfix release in April,所以我也不知道你在哪里得到的想法,它不再维持。然而,即使这是真的,BeautifulSoup仍然有很多功能,我甚至都没有看到即使目前的实现很快就会崩溃。您可能会在未来2年内开始遇到HTML 5的问题(虽然有很少的怪癖,因此解析起来更容易,至少目前为止),但没有特别的理由不使用BeautifulSoup。 Google社群仍然积极支持Google等群组,并且显然可以根据您的需要随时增强源代码。

+0

酷..非常感谢你:-) – 2010-07-17 18:10:38

0

那么,如果你不是义务绑定到python,你总是可以使用TagSoup解析器。这是一个Java库,但它提供了非常好的结果。在尝试解析它之前,您也可以使用Tidy清理输入。

+0

Python是我所知道的,我正在学习的时刻。 – 2010-07-17 18:13:29

6

我会避开lxml,它对我的​​口味太挑剔了。如果我是你,我会尝试html5lib。它不仅解析html,而且强大地处理您在标签汤中看到的那种称为无效html的错误。

它甚至有一个BeautifulSoup仿真模式,产生于美丽的汤的形式来缓解整个移植旧代码解析树:

import html5lib 
from html5lib import treebuilders 

f = open("mydocument.html") 
parser = html5lib.HTMLParser(tree=treebuilders.getTreeBuilder("beautifulsoup")) 
minidom_document = parser.parse(f) 
+0

你是否也试过lxml.html(而不是lxml.etree)?我已经有了很好的体验,即使有很差的标签汤。 另请注意,您也可以使用html5lib解析器和lxml。 – Steven 2010-07-14 10:45:30

+0

不,我没有,但现在我会:) – fmark 2010-07-14 11:24:57

+1

我想我会坚持BeautifulSoup – 2010-07-17 18:11:15