Python學習之beautifulsoup4庫的使用


一、beautifulsoup4庫簡介

  使用requests庫獲取HTML頁面並將其轉換成字符串后,需要進一步分析HTML頁面格式,提取有用信息,這個需要處理HTML和XML函數庫。

  beautifulsoup4庫,也成為Beautiful Soup庫或者bs4庫,用於解析和處理HTML和XML。需要注意的是,他不是Beautifulsoup庫。它最大的優點是能根據HTML和XML語法建立解析樹,進而高效解析其中的內容。

  HTML建立的web頁面一般是比較復雜的,除了有用的信息外,還包括大量的頁面格式信息元素,直接解析一個web網頁需要深入了解HTML語法。而beautifulsoup4庫將專業的web網頁格式解析部分封裝成函數,提供了若干有用快捷的處理函數。

 

二、beautifulsoup4庫使用

1. beautifulsoup4庫中最主要的是BeautifulSoup類,每個實例化的對象相當於一個頁面。

使用BeautifulSoup()創建一個BeautifulSoup對象:

    

  創建的BeautifulSoup對象是一個樹形結構,它包含HTML頁面中的每一個Tag(標簽)元素,如<head>、<body>等。具體描述的話,是HTML中主要結構都變成了BeautifulSoup對象的一個屬性,

可以直接用<a>.<b>形式獲取,其中<b>的名字采用HTML中標簽的名字。

 

2. BeautifulSoup對象常用的屬性

     head          HTML頁面的<head>內容

     title             HTML頁面標題,在<head>中,由<title>標記

     body           HTML頁面的<body>內容

     p            HTML頁面中第一個<p>內容

     strings           HTML頁面所有呈現在web上的字符,即標簽的內容

     stripped_strings       HTML頁面所有呈現在web上的非空字符串

 

如略去<style>標簽輸出:


 

  每一個Tag標簽在beautifulsoup4庫中都是一個對象,稱為Tag對象。例如,title是一個標簽對象。每一個標簽對象在HTML中都有類似的結構:

  <a  class=''mnav'' href="http://www.baidu.com">糯米</a>

其中,尖括號(<>)中標簽的名字是name,尖括號內其他項是attrs,尖括號之間的內容是string。因此,Tag對象有屬性name、attrs、string,並且采用<a>.<b>的語法形式

    name      字符串標簽的名字,比如div

    attrs        字典,包含了原來頁面Tag所有屬性,比如href

    contents     列表,這個Tag下所有子Tag的內容

    string      字符串,Tag所包圍的文本,網頁中真實的文字

如下:

  由於HTML語法可以在標簽中嵌套其他標簽,所以string屬性的返回值遵循如下原則:

(1)如果標簽內部沒有其他標簽,string屬性返回其中內容。

(2)如果標簽內部還有其他標簽,但只有一個標簽,string屬性返回最里面的標簽內容。

(3)如果標簽內部有超過一層嵌套標簽,string屬性返回None(空字符串

HTML語法中同一個標簽會有很多內容例如標簽<a>,百度首頁一共有13處,直接調用soup.a只能返回一個。當需要列出標簽對應所有內容或者需要找到非第一個標簽時,

需要用到BeautifulSoup的find()和find_all()方法。這兩個方法會遍歷到整個HTML文檔,按照條件返回標簽內容。

作用:根據參數找到標簽對象,返回列表類型。

參數如下:

    name:按照Tag標簽名字檢索,名字用字符串形式表示,例如div、li;

    attrs:按照Tag標簽屬性值檢索,需要列出屬性名稱和值,采用JSON表示;

    recursive:設置查找層次,只查找當前標簽下一層時使用recursive=False;

    string:按照關鍵字檢索string屬性內容,采用string=開始;

    limit:返回結果的個數,默認返回全部結果;

 

如下:

 

 

  簡單的說,BeautifulSoup的find_all()方法可以根據標簽名字、標簽屬性和內容檢索並返回標簽列表,通過片段字符串檢索時需要使用正則表達式re函數庫。當對標簽進行檢索時,

屬性和對應的值采用JSON格式,如:

  ‘src’:re.compile('jquery')    其中鍵值對中值的部分可以是字符串或者正則表達式。

 

 

 

僅用於Python學習筆記

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM