天天看點

第14.8節 Python中使用BeautifulSoup加載HTML封包

一、 引言

BeautifulSoup是一個三方子產品bs4中提供的進行HTML解析的類,可以認為是一個HTML解析工具箱,對HTML封包中的标簽具有比較好的容錯識别功能。閱讀本節需要了解html相關的基礎知識,如果這方面知識不足請參考《​​第14.2節 HTML知識簡介​​》。

二、 BeautifulSoup安裝、導入和建立對象

安裝BeautifulSoup和lxml

BeautifulSoup是bs4子產品的類,lxml是一款html文本解析器,在作業系統指令行方式執行安裝bs4子產品和lxml解析器子產品的指令:

pip install bs4

pip install lxml

加載BeautifulSoup所在子產品

因為BeautifulSoup是bs4子產品提供的一個類,一般導入時使用:

from bs4 import BeautifulSoup

定義BeautifulSoup執行個體對象

BeautifulSoup類的構造方法提供6個參數并支援更多動态參數擴充,一般使用時構造BeautifulSoup類的執行個體時,傳入前2個參數,第一個參數是要解析的html文本字元串或使用open函數打開的html檔案,第二個參數是html解析器名字,參數值包括如”html.parser”,”lxml”,”html5lib”、“lxml-xml”。

BeautifulSoup支援Python标準庫中的HTML解析器html.parser,還支援一些第三方的解析器如lxml、lxml-xml、html5lib,如果我們不安裝第三方的解析器,則 Python 會使用 Python預設的标準庫内置解析器html.parser,官方推薦使用lxml 解析器,因為lxml 解析器更加強大,支援xml解析,速度更快。

案例:

1)對文本字元串進行解析

2)對檔案對象直接進行解析

傳回的執行個體對象soup可以通過print列印出html文本,為什麼一個類可以通過print列印出來?這個請參考《​​第8.14節 Python類中内置方法__str__詳解​​》

使用prettify檢視解析封包對應的格式化後的html封包