一篇演示了如何使用requests模塊向網(wǎng)站發(fā)送http請(qǐng)求,獲取到網(wǎng)頁(yè)的HTML數(shù)據(jù)。這篇來(lái)演示如何使用BeautifulSoup模塊來(lái)從HTML文本中提取我們想要的數(shù)據(jù)。 update on 2016-12-28:之前忘記給BeautifulSoup的官網(wǎng)了,今天補(bǔ)上,順便再補(bǔ)點(diǎn)BeautifulSoup的用法。 # 二、運(yùn)行環(huán)境 *** 我的運(yùn)行環(huán)境如下: - 系統(tǒng)版本 Windows10。 - Python版本 Python3.5,推薦使用Anaconda 這個(gè)科學(xué)計(jì)算版本,主要是因?yàn)樗詭б粋€(gè)包管理工具,可以解決有些包安裝錯(cuò)誤的問(wèn)題。去[Anaconda官網(wǎng)](https://www.continuum.io/downloads),選擇Python3.5版本,然后下載安裝。 - IDE 我使用的是PyCharm,是專門為Python開發(fā)的IDE。這是JetBrians的產(chǎn)品,[點(diǎn)我下載](http://www.jetbrains.com/pycharm/)。 # 三、模塊安裝 *** BeautifulSoup 有多個(gè)版本,我們使用BeautifulSoup4。詳細(xì)使用看[BeautifuSoup4官方文檔](http://beautifulsoup.readthedocs.io/zh_CN/latest/)。 使用管理員權(quán)限打開cmd命令窗口,在窗口中輸入下面的命令即可安裝: `conda install beautifulsoup4` ![](http://upload-images.jianshu.io/upload_images/3879861-a611fda59a4d39ff.gif?imageMogr2/auto-orient/strip) 直接使用Python3.5 沒有使用Anaconda版本的童鞋使用下面命令安裝: `pip install beautifulsoup4` 然后我們安裝lxml,這是一個(gè)解析器,BeautifulSoup可以使用它來(lái)解析HTML,然后提取內(nèi)容。 Anaconda 使用下面命令安裝lxml: `conda install lxml` ![](http://upload-images.jianshu.io/upload_images/3879861-6ba0d9fca86f0771.gif?imageMogr2/auto-orient/strip) 使用Python3.5 的童鞋們直接使用pip安裝會(huì)報(bào)錯(cuò)(所以才推薦使用Anaconda版本),安裝教程[看這里](http://blog.csdn.net/qq_33279781/article/details/52026806)。 如果不安裝lxml,則BeautifulSoup會(huì)使用Python內(nèi)置的解析器對(duì)文檔進(jìn)行解析。之所以使用lxml,是因?yàn)樗俣瓤臁?文檔解析器對(duì)照表如下: 解析器 | 使用方法 | 優(yōu)勢(shì) | 劣勢(shì) --- | --- | --- | --- Python標(biāo)準(zhǔn)庫(kù) | BeautifulSoup(markup,"html.parser") | 1. Python的內(nèi)置標(biāo)準(zhǔn)庫(kù)
2. 執(zhí)行速度適
3. 中文檔容錯(cuò)能力強(qiáng) | Python 2.7.3 or 3.2.2)前 的版本中文檔容錯(cuò)能力差 lxml HTML 解析器 | BeautifulSoup(markup,"lxml") | 1. 速度快
2. 文檔容錯(cuò)能力強(qiáng) | 需要安裝C語(yǔ)言庫(kù) lxml XML 解析器 | BeautifulSoup(markup,["lxml-xml"]) 
BeautifulSoup(markup,"xml") | 1. 速度快
2. 唯一支持XML的解析器 | 需要安裝C語(yǔ)言庫(kù) html5lib | BeautifulSoup(markup,"html5lib") | 1. 最好的容錯(cuò)性
2. 以瀏覽器的方式解析文檔
3. 生成HTML5格式的文檔 | 速度慢,不依賴外部擴(kuò)展 # 四、BeautifulSoup 庫(kù)的使用 *** 網(wǎng)上找到的幾個(gè)官方文檔:[BeautifulSoup4.4.0中文官方文檔](http://beautifulsoup.readthedocs.io/zh_CN/latest/),[BeautifulSoup4.2.0中文官方文檔](https://www.crummy.com/software/BeautifulSoup/bs4/doc.zh/)。不同版本的用法差不多,幾個(gè)常用的語(yǔ)法都一樣。 首先來(lái)看BeautifulSoup的對(duì)象種類,在使用的過(guò)程中就會(huì)了解你獲取到的東西接下來(lái)應(yīng)該如何操作。 ## 4.1 BeautifulSoup對(duì)象的類型 Beautiful Soup將復(fù)雜HTML文檔轉(zhuǎn)換成一個(gè)復(fù)雜的樹形結(jié)構(gòu),每個(gè)節(jié)點(diǎn)都是Python對(duì)象。所有對(duì)象可以歸納為4種類型: Tag , NavigableString , BeautifulSoup , Comment 。下面我們分別看看這四種類型都是什么東西。 ### 4.1.1 Tag 這個(gè)就跟HTML或者XML(還能解析XML?是的,能?。┲械臉?biāo)簽是一樣一樣的。我們使用find()方法返回的類型就是這個(gè)(插一句:使用find-all()返回的是多個(gè)該對(duì)象的集合,是可以用for循環(huán)遍歷的。)。返回標(biāo)簽之后,還可以對(duì)提取標(biāo)簽中的信息。 ###### 提取標(biāo)簽的名字: `tag.name` ###### 提取標(biāo)簽的屬性: `tag['attribute'] ` 我們用一個(gè)例子來(lái)了解這個(gè)類型: ``` from bs4 import BeautifulSoup html_doc = """

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運(yùn),軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式