Beautiful Soup 4 怎么安裝

2021-05-20 09:43 更新

本章節(jié)主要介紹beautifulsoup4怎么安裝,以及解析器的安裝教程。

安裝 Beautiful Soup

如果你用的是新版的 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ā)布版本,因?yàn)楹芏囗?xiàng)目還在使用 BS3, 所以 ?BeautifulSoup? 包依然有效.但是如果你在編寫新項(xiàng)目,那么你應(yīng)該安裝的 ?beautifulsoup4? )

如果你沒有安裝 ?easy_install? 或 ?pip? ,那你也可以 下載BS4的源碼 ,然后通過 setup.py 來安裝.

?$ Python setup.py install?

如果上述安裝方法都行不通,Beautiful Soup 的發(fā)布協(xié)議允許你將 BS4 的代碼打包在你的項(xiàng)目中,這樣無須安裝即可使用.

作者在 Python2.7 和 Python3.2 的版本下開發(fā) Beautiful Soup, 理論上 Beautiful Soup 應(yīng)該在所有當(dāng)前的 Python 版本中正常工作

安裝完成后的問題

Beautiful Soup 發(fā)布時打包成 Python2 版本的代碼,在 Python3 環(huán)境下安裝時,會自動轉(zhuǎn)換成 Python3 的代碼,如果沒有一個安裝的過程,那么代碼就不會被轉(zhuǎn)換.

如果代碼拋出了 ?ImportError? 的異常: “No module named HTMLParser”, 這是因?yàn)槟阍?Python3 版本中執(zhí)行 Python2 版本的代碼.

如果代碼拋出了 ?ImportError? 的異常: “No module named html.parser”, 這是因?yàn)槟阍?Python2 版本中執(zhí)行 Python3 版本的代碼.

如果遇到上述2種情況,最好的解決方法是重新安裝 BeautifulSoup4.

如果在ROOT_TAG_NAME = u’[document]’代碼處遇到 ?SyntaxError? “Invalid syntax”錯誤,需要將把 BS4 的 Python 代碼版本從 Python2 轉(zhuǎn)換到 Python3. 可以重新安裝 BS4:

?$ Python3 setup.py install?

或在bs4的目錄中執(zhí)行Python代碼版本轉(zhuǎn)換腳本

?$ 2to3-3.2 -w bs4?

安裝解析器

Beautiful Soup 支持 Python 標(biāo)準(zhǔn)庫中的 HTML 解析器,還支持一些第三方的解析器,其中一個是 lxml .根據(jù)操作系統(tǒng)不同,可以選擇下列方法來安裝lxml:

?$ apt-get install Python-lxml?

?$ apt-get install Python-lxml?

?$ apt-get install Python-lxml?

另一個可供選擇的解析器是純Python實(shí)現(xiàn)的 html5lib , html5lib 的解析方式與瀏覽器相同,可以選擇下列方法來安裝 html5lib:

?$ apt-get install Python-html5lib?

?$ apt-get install Python-html5lib?

?$ apt-get install Python-html5lib?

下表列出了主要的解析器,以及它們的優(yōu)缺點(diǎn):

解析器 使用方法 優(yōu)勢 劣勢
Python標(biāo)準(zhǔn)庫 BeautifulSoup(markup, "html.parser")
  • Python的內(nèi)置標(biāo)準(zhǔn)庫
  • 執(zhí)行速度適中
  • 文檔容錯能力強(qiáng)
  • Python 2.7.3 or 3.2.2)前 的版本中文檔容錯能力差
lxml HTML 解析器 BeautifulSoup(markup, "lxml")
  • 速度快
  • 文檔容錯能力強(qiáng)
  • 需要安裝C語言庫
lxml XML 解析器

BeautifulSoup(markup, ["lxml-xml"])

BeautifulSoup(markup, "xml")

  • 速度快
  • 唯一支持XML的解析器
  • 需要安裝C語言庫
html5lib BeautifulSoup(markup, "html5lib")
  • 最好的容錯性
  • 以瀏覽器的方式解析文檔
  • 生成HTML5格式的文檔
  • 速度慢
  • 不依賴外部擴(kuò)展

推薦使用lxml作為解析器,因?yàn)樾矢? 在 Python2.7.3 之前的版本和 Python3 中3.2.2之前的版本,必須安裝lxml或html5lib, 因?yàn)槟切?Python 版本的標(biāo)準(zhǔn)庫中內(nèi)置的 HTML 解析方法不夠穩(wěn)定.

提示: 如果一段 HTML 或 XML 文檔格式不正確的話,那么在不同的解析器中返回的結(jié)果可能是不一樣的,查看 解析器之間的區(qū)別 了解更多細(xì)節(jié)。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號