天天看點

了解和使用bs4工具(1)之介紹篇

本篇主要根據Beautiful Soup 4.4.0官方文檔(以下簡稱bs4)中的内容對bs4進行介紹和簡單使用,内容為個人了解,如若有其他疑問或讨論請指出

bs4官方文檔連結:參考文檔

一、bs4的簡單介紹

什麼是bs4

bs4全稱為Beautiful Soup,一般用于解析網頁可以從html或xml檔案中提取資料。bs4是一個工具箱,提供的接口接單使用起來十分人性化。

bs4的優點

  • 具有對象的通路方法。bs4将本地html格式字元串生成為一個對象,進而我們可以通過對象的方法來進行查找指定元素。
  • 不用考慮編碼方式。bs4通過解析文檔将輸入文檔轉化為Unicode編碼,輸出文檔為utf-8編碼,除非文檔沒有指定一個原始的編碼方式,否則不需要考慮其編碼方式(大部分不需要考慮)
  • 簡潔快速。bs4可以通喜歡的轉換器實作管用的文檔導航,查找,修改文檔的方式,節省許多工作時間。

二、bs4的快速安裝

關于ubuntu中的安裝或pip安裝在官方文檔中已經有詳細介紹,在這裡隻對在PyCharm中的快速安裝和引用進行簡單介紹。

2.1 安裝
File > Settings > Project > Project Interpreter > 點選加号添加引用的庫 > 搜尋bs4 > Install Package下載下傳
           
了解和使用bs4工具(1)之介紹篇
2.2 引用

在代碼開頭加入引用bs4庫即可使用

from bs4 import BeautifulSoup
           

三、bs4的四種對象

bs4将複雜的html文檔轉換為一個樹形結構,每個節點都是Python對象,所有對象可以歸納為四種。

3.1 Tag對象

與xml或html原生文檔中的tag相同,是html中的一個标簽,使用bs4可以解析出Tag的具體内容。

Tag有許多方法和屬性,在周遊文檔樹和搜尋文檔樹中有很大的幫助,最重要的屬性有name和attibutes,在bs4實踐和了解(2)篇的指定内容擷取方法彙總中會詳細說明。

  • 作用:使用soup加簽名擷取标簽内容
  • 使用方法:soup.b
  • 對象類型:<class ‘bs4.element.Tag’>
  • 舉例
soup = BeautifulSoup('<b class="boldest">Extremely bold</b>')
tag = soup.b
type(tag)
# <class 'bs4.element.Tag'>
           
3.2 BeautifulSoup對象
  • 作用:整個文檔的對象,包含整個文檔的内容,可以認為是一個Tag對象
  • 使用方法:與tag對象使用無太大差異故不詳細介紹

3.3 NavigableString對象

  • 作用:擷取标簽内的文本内容
  • 使用方法:soup.b.string
  • 對象類型:<class ‘bs4.element.NavigableString’>
  • 舉例
soup = BeautifulSoup('<b class="boldest">Extremely bold</b>')
tag_string = soup.b.string
# u'Extremely bold'
type(tag_string)
# <class 'bs4.element.NavigableString'>
           

3.4 Comment對象

  • 作用:是一個特殊的NavigableString對象,用來過濾html标簽中的注釋符号保留其注釋文本
  • 使用方法:同NavigableString
  • 對象類型:<class ‘bs4.element.Comment’>
  • 舉例
markup = "<b><!--Hey, buddy. Want to buy a used parser?--></b>"
soup = BeautifulSoup(markup)
comment = soup.b.string
type(comment)
# <class 'bs4.element.Comment'>
comment
# 'Hey, buddy. Want to buy a used parser?'
           

最常用的是BeautifulSoup對象和Tag對象

四、bs4的簡單使用

初始化,使用BeautifulSoup包括兩個參數,第一個參數是要解析的html文本,在Python爬蟲中一般為使用request擷取到的網頁資訊,第二個參數為為解析器。

關于解析器,這裡的html.parser是bs4自帶的解析器。當一段html或xml文檔格式不正确時,在不同的解析器中傳回的結果可能不同。

解析器 使用方法 優勢
Python标準庫 BeautifulSoup(html, “html.parser”) 1.Python的内置标準庫 2.執行速度适中 3.文檔容錯能力強
lxml HTML BeautifulSoup(html, “lxml”) 1.速度快 2.文檔容錯能力強
lxml XML BeautifulSoup(html, [“lxml”, “xml”]) 1.速度快 2.唯一支援XML的解析器
html5lib BeautifulSoup(html, “html5lib”) 1.最好的容錯性 2.以浏覽器的方式解析文檔 3.生成HTML5格式的文檔

系列内容:了解和使用bs4工具(2)之資料分類查找篇