2010-07-14 47 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