BautifulSoup簡介
BeautifulSoup 簡稱 BS4(其中 4 表示版本號 4.x,之前的版本已經停止開發),是一個可以快速從 HTML 或 XML 文件中提取數據的第三方 Python 庫。
BeautifulSoup 能夠將 HTML 或 XML 轉化為可定位的樹形結構,並且提供一些簡單的、python 式的函數用來處理導航、查找、修改功能,
BeautifulSoup 會自動將輸入文檔轉換為 Unicode 編碼,輸出文檔轉換為 UTF-8 編碼,如果文檔沒有指定一個編碼方式,就需要說明一下原始編碼方式。
BeautifulSoup 語法簡單,使用方便,並且容易理解,不需要多少代碼就可以寫出一個完整的應用程序,使用BeautifulSoup 我們可以節省工作時間,提高解析效率。
BeautifulSoup 的優缺點:
解析器:
BeautifulSoup 在解析的時候實際上是依賴於解析器的,它除了支持 Python 標准庫中的 HTML 解析器,還支持一些第三方的解析器比如 lxml。
BeautifulSoup 主要解析器和優缺點對比如下表:
lxml HTML 解析器有解析 HTML 和 XML 的功能,並且速度快,文檔容錯能力強,所以推薦使用,使用前要先安裝lxml。
BautifulSoup 安裝位置:Python安裝目錄的Scripts文件夾下
安裝命令:pip install bs4
如圖所示則下載成功:
待解析的 html 文件:
<!DOCTYPE html>
<html lang="en">
<head>
<title>
</title>
</head>
<body>
<p class="title"/>
<p class="story">
<a class="s1" href="www.baidu.com" id="l1"></a>
<a class="s2" href="" id="l2"></a>
<a class="s3" href="" id="l3"></a>
</p>
<p class="story"/>
</body>
</html>
使用實例:
BeaufulSoup 對象的初始化:
第一個參數:html文件,
第二個參數;解析器的類型, 使用 lxml 解析器
soup = BeautifulSoup(open('test.html',encoding='utf-8'),'lxml')
調用 soup 對 html 文件解析,提取文本內容:
# 獲取第一個符合條件的標簽屬性
print(soup.p)
# 獲取第一個符合條件的標簽屬性和屬性值
print(soup.a.attrs)
執行結果:
<p class="title"></p>
{
'class': ['s1'], 'href': 'www.baidu.com', 'id': 'l1'}