序
Beautiful Soup 是一個(gè)可以從HTML或XML文件中提取數(shù)據(jù)的Python庫.它能夠通過你喜歡的轉(zhuǎn)換器實(shí)現(xiàn)慣用的文檔導(dǎo)航,查找,修改文檔的方式.Beautiful Soup會(huì)幫你節(jié)省數(shù)小時(shí)甚至數(shù)天的工作時(shí)間。
Beautiful Soup支持Python標(biāo)準(zhǔn)庫中的HTML解析器,還支持一些第三方的解析器,其中一個(gè)是 lxml 。
另一個(gè)可供選擇的解析器是純Python實(shí)現(xiàn)的 html5lib , html5lib的解析方式與瀏覽器相同。
Windows平臺(tái) + Python3.5
安裝BeautifulSoup4
方法一:打開cmd,運(yùn)行pip install BeautifulSoup4
如上圖所示,由于我已經(jīng)安裝過了??梢允褂?--upgrade來升級為最新版本。
至此,便安裝完畢。
驗(yàn)證成功,編譯一個(gè).py文件,輸入from bs4 import BeautifulSoup4,不會(huì)報(bào)錯(cuò)即代表安裝成功。
安裝html5lib
第二步,我們安裝網(wǎng)頁文件解析器htm5lib,只需直接運(yùn)行pip install html5lib即可:
安裝lxml
在Windows下,安裝lxml費(fèi)了一點(diǎn)勁兒,不能直接通過命令成功安裝。我們需要去官方網(wǎng)站下載與平臺(tái)完全一致的版本,手動(dòng)安裝。
首先,查看我們的平臺(tái)依賴的工具版本:
Ctrl + F,輸入lxml,找到下面這段:
Lxml, a binding for the libxml2 and libxslt libraries.
lxml?3.4.4?cp27?none?win32.whl
lxml?3.4.4?cp27?none?win_amd64.whl
lxml?3.4.4?cp33?none?win32.whl
lxml?3.4.4?cp33?none?win_amd64.whl
lxml?3.4.4?cp34?none?win32.whl
lxml?3.4.4?cp34?none?win_amd64.whl
lxml?3.4.4?cp35?none?win32.whl
lxml?3.4.4?cp35?none?win_amd64.whl
cp后面是Python的版本號,27表示2.7,根據(jù)你的Python版本選擇下載。
最后進(jìn)行安裝,打開cmd,先運(yùn)行pip install wheel安裝wheel工具,做好準(zhǔn)備工作。
接著運(yùn)行pip install *.whl文件,我的對應(yīng)版本為lxml-3.6.0-cp35-cp35m-win_amd64.whl即可成功安裝lxml解析器。
至此,三個(gè)工具都安裝完畢。
對于Linux平臺(tái)下,安裝就很簡單了,直接利用三個(gè)命令即可完成:
- pip install BeautifulSoup4 或 easy_install BeautifulSoup4
- pip install html5lib
- pip install lxml
使用BeautifulSoup
我們編輯一段html文檔,利用BeautifulSoup庫進(jìn)行解析:
- html = """
- <html><head><title>The Dormouse's story</title></head>
- <body>
- <p class="title"><b>The Dormouse's story</b></p>
-
- <p class="story">Once upon a time there were three little sisters; and their names were
- <a href="http:///elsie" class="sister" id="link1">Elsie</a>,
- <a href="http:///lacie" class="sister" id="link2">Lacie</a> and
- <a href="http:///tillie" class="sister" id="link3">Tillie</a>;
- and they lived at the bottom of a well.</p>
-
- <p class="story">...</p>
- """
-
- from bs4 import BeautifulSoup
-
- #添加一個(gè)解析器
- soup = BeautifulSoup(html,'html5lib')
- print(soup.title)
- print(soup.title.name)
- print(soup.title.text)
- print(soup.body)
-
- #從文檔中找到所有<a>標(biāo)簽的內(nèi)容
- for link in soup.find_all('a'):
- print(link.get('href'))
-
-
- #從文檔中找到所有文字內(nèi)容
- print(soup.get_text())
注意:
在聲明BeautifulSoup對象的時(shí)候要明確解析器 soup = BeautifulSoup(html,'html5lib'),否則寫為 soup = BeautifulSoup(html) 會(huì)有警告。
運(yùn)行上述代碼:
我們發(fā)現(xiàn),BeautifulSoup可以十分方便的提取Html的結(jié)構(gòu)化數(shù)據(jù)。這就為我們解析網(wǎng)頁文件內(nèi)容,爬取目標(biāo)元素提供了極大的幫助。
這只是一個(gè)小小的例子,BeautifulSoup庫的功能十分強(qiáng)大,趕緊去官方文檔學(xué)習(xí)吧~
|