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

延伸閱讀

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