本章節(jié)主要介紹beautifulsoup4怎么安裝,以及解析器的安裝教程。
如果你用的是新版的 Debain 或 ubuntu,那么可以通過系統(tǒng)的軟件包管理來安裝:
?$ apt-get install Python-bs4
?
Beautiful Soup 4 通過 PyPi 發(fā)布,所以如果你無法使用系統(tǒng)包管理安裝,那么也可以通過 ?easy_install
? 或 ?pip
? 來安裝.包的名字是 ?beautifulsoup4
? ,這個包兼容 Python2 和 Python3.
?$ easy_install beautifulsoup4
?
?$ pip install beautifulsoup4
?
(在 PyPi 中還有一個名字是 ?BeautifulSoup
? 的包,但那可能不是你想要的,那是 Beautiful Soup3 的發(fā)布版本,因為很多項目還在使用 BS3, 所以 ?BeautifulSoup
? 包依然有效.但是如果你在編寫新項目,那么你應該安裝的 ?beautifulsoup4
? )
如果你沒有安裝 ?easy_install
? 或 ?pip
? ,那你也可以 下載BS4的源碼 ,然后通過 setup.py 來安裝.
?$ Python setup.py install
?
如果上述安裝方法都行不通,Beautiful Soup 的發(fā)布協(xié)議允許你將 BS4 的代碼打包在你的項目中,這樣無須安裝即可使用.
作者在 Python2.7 和 Python3.2 的版本下開發(fā) Beautiful Soup, 理論上 Beautiful Soup 應該在所有當前的 Python 版本中正常工作
Beautiful Soup 發(fā)布時打包成 Python2 版本的代碼,在 Python3 環(huán)境下安裝時,會自動轉換成 Python3 的代碼,如果沒有一個安裝的過程,那么代碼就不會被轉換.
如果代碼拋出了 ?ImportError
? 的異常: “No module named HTMLParser”, 這是因為你在 Python3 版本中執(zhí)行 Python2 版本的代碼.
如果代碼拋出了 ?ImportError
? 的異常: “No module named html.parser”, 這是因為你在 Python2 版本中執(zhí)行 Python3 版本的代碼.
如果遇到上述2種情況,最好的解決方法是重新安裝 BeautifulSoup4.
如果在ROOT_TAG_NAME = u’[document]’代碼處遇到 ?SyntaxError
? “Invalid syntax”錯誤,需要將把 BS4 的 Python 代碼版本從 Python2 轉換到 Python3. 可以重新安裝 BS4:
?$ Python3 setup.py install
?
或在bs4的目錄中執(zhí)行Python代碼版本轉換腳本
?$ 2to3-3.2 -w bs4
?
Beautiful Soup 支持 Python 標準庫中的 HTML 解析器,還支持一些第三方的解析器,其中一個是 lxml .根據(jù)操作系統(tǒng)不同,可以選擇下列方法來安裝lxml:
?$ apt-get install Python-lxml
?
?$ apt-get install Python-lxml
?
?$ apt-get install Python-lxml
?
另一個可供選擇的解析器是純Python實現(xiàn)的 html5lib , html5lib 的解析方式與瀏覽器相同,可以選擇下列方法來安裝 html5lib:
?$ apt-get install Python-html5lib
?
?$ apt-get install Python-html5lib
?
?$ apt-get install Python-html5lib
?
下表列出了主要的解析器,以及它們的優(yōu)缺點:
解析器 | 使用方法 | 優(yōu)勢 | 劣勢 |
---|---|---|---|
Python標準庫 | BeautifulSoup(markup, "html.parser")
|
|
|
lxml HTML 解析器 | BeautifulSoup(markup, "lxml")
|
|
|
lxml XML 解析器 |
|
|
|
html5lib | BeautifulSoup(markup, "html5lib")
|
|
|
推薦使用lxml作為解析器,因為效率更高. 在 Python2.7.3 之前的版本和 Python3 中3.2.2之前的版本,必須安裝lxml或html5lib, 因為那些 Python 版本的標準庫中內(nèi)置的 HTML 解析方法不夠穩(wěn)定.
提示: 如果一段 HTML 或 XML 文檔格式不正確的話,那么在不同的解析器中返回的結果可能是不一樣的,查看 解析器之間的區(qū)別 了解更多細節(jié)。
更多建議: