寫在前面上一篇演示了如何使用requests模塊向網站發送http請求,獲取到網頁的HTML數據。這篇來演示如何使用BeautifulSoup模塊來從HTML文本中提取我們想要的數據。
運行環境我的運行環境如下:系統版本:Windows10。Python版本:Python3.6? IDE:Pycharm
BeautifulSoup ——解析html文檔
首先來看BeautifulSoup的對象種類,在使用的過程中就會了解你獲取到的東西接下來應該如何操作。Beautiful Soup將復雜HTML文檔轉換成一個復雜的樹形結構,每個節點都是Python對象。所有對象可以歸納為4種類型: Tag , NavigableString , BeautifulSoup , Comment 。
下面我們分別看看這四種類型都是什么東西。
1>.Tag
這個就跟HTML或者XML(還能解析XML?是的,能!)中的標簽是一樣一樣的。我們使用find()方法返回的類型就是這個(插一句:使用find-all()返回的是多個該對象的集合,是可以用for循環遍歷的。)。返回標簽之后,還可以對提取標簽中的信息。
提取標簽的名字:
tag.name
提取標簽的屬性:
tag['attribute']
我們用一個例子來了解這個類型:
運行結果如下:
2>.NavigableString
NavigableString就是標簽中的文本內容(不包含標簽)。
獲取方式如下:
tag.string
還是以上面那個例子,加上下面這行,然后執行:
print('NavigableString is:', find.string)結果得到的是
NavigableString is: The Dormouse's story
3>.BeautifulSoup
BeautifulSoup對象表示一個文檔的全部內容。支持遍歷文檔樹和搜索文檔樹
4>.Comment這個對象其實就是HTML和XML中的注釋
結果如下
Hey, buddy. Want to buy a used parser?
<class 'bs4.element.Comment'>