1. 程式人生 > >Python網路爬蟲與資訊提取(三)bs4入門

Python網路爬蟲與資訊提取(三)bs4入門

  Python的requests庫可以幫助我們獲取到大量的資訊,而如果想對這些資訊進行提取與分析,則經常使用beautifulsoup這個用來解析HTML和XML格式的功能庫。

  beautifulsoup庫的安裝和requests的流方法一樣,可直接在cmd中輸入pip install beautifulsoup4來安裝,安裝完成後可直接在IDLE中輸入import bs4來驗證是否安裝成功。

  接下來我們以python123.io中一個專為bs4庫設計的網頁為例來體驗下bs4庫的基礎操作。


  其中prettify()方法可以在各節點之間加入換行符已使打印出來的解析文字可讀性更高:


 可以看到,想使用bs4來解析網頁資訊時,我們需要將待解析的網頁的html資訊傳入BeautifulSoup這個類中,再將我們想使用的解析器作為第二個引數傳入類中,然後我們可以通過prettify這個方法來將解析後的網頁打印出來。

  bs4中除了可以使用html.parser這個解析器之外,還可以使用lxml的HTML與XML解析器以及html5lib的解析器,使用之前只需安裝對應的解析器的庫即可。

  由此可見BeautifulSoup的主要用途是對HTML和XML的“標籤樹”進行解析、遍歷和維護,只要給它提供的文字為標籤型別,它都能對其進行解析,可以簡單的將BeautifulSoup類當成一個HTML文件的全部內容。

  BeautifulSoup類的基本元素與HTML和XML的語法格式是一一對應的,下面將以此為基礎對這個類中的元素進行介紹。

基本元素說明
Tag標籤,最基本的資訊組織單元,分別用<>和</>標明開頭和結尾
Name標籤的名字,<p>...</p>的名字是'p',格式:<tag>.name
Attributes標籤的屬性,字典形式組織,格式:<tag>.attrs
NavigableString標籤內非屬性字串,<>...</>中字串,格式:<tag>.string
Comment

b標籤內字串的註釋部分,一種特殊的Comment型別

  我們仍以剛才的soup為例:


  我們可以用soup.tag來返回對應的tag裡的內容,當文件中存在多個tag時預設只返回第一個tag,



  同理我們可以用相應的方法獲取標籤的名字及屬性,又因為屬性返回的是一個字典值,所以我們可以將對字典操作的方法直接用於操作屬性值,其他元素的使用方法也如此。

  其中要特別注意BeautifulSoup對HTML中的註釋返回的值並沒有標明,所以直觀上無法區分哪些是註釋哪些是文字中的字串,所以在實際分析時可以通過type方法來對兩者加以區分。