程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Python爬蟲——BS4解析方式簡介

編輯:Python

文章目錄

  • Python爬蟲——BS4解析方式簡介
    • 1、BautifulSoup簡介
    • 2、BautifulSoup 安裝
    • 3、BautifulSoup 基本使用

Python爬蟲——BS4解析方式簡介

1、BautifulSoup簡介

BautifulSoup簡介

BeautifulSoup 簡稱 BS4(其中 4 表示版本號 4.x,之前的版本已經停止開發),是一個可以快速從 HTML 或 XML 文件中提取數據的第三方 Python 庫。

BeautifulSoup 能夠將 HTML 或 XML 轉化為可定位的樹形結構,並且提供一些簡單的、python 式的函數用來處理導航、查找、修改功能,

BeautifulSoup 會自動將輸入文檔轉換為 Unicode 編碼,輸出文檔轉換為 UTF-8 編碼,如果文檔沒有指定一個編碼方式,就需要說明一下原始編碼方式。

BeautifulSoup 語法簡單,使用方便,並且容易理解,不需要多少代碼就可以寫出一個完整的應用程序,使用BeautifulSoup 我們可以節省工作時間,提高解析效率。

BeautifulSoup 的優缺點:

  • 缺點:BeautifulSoup 默認使用 Python 標准庫中的 HTML 解析器,HTML 解析器需要解析的數據量比較大或比較頻繁時效率比 lxml 解析器低,因此在使用BeautifulSoup 時要指定解析器為 lxml 解析器
  • 優點:接口設計人性化,使用起來方便

解析器:

BeautifulSoup 在解析的時候實際上是依賴於解析器的,它除了支持 Python 標准庫中的 HTML 解析器,還支持一些第三方的解析器比如 lxml。

BeautifulSoup 主要解析器和優缺點對比如下表:

解析器使用方法優點缺點Python標准庫BeautifulSoup (html文件, “html.parser”)Python 的內置標准庫、執行速度適中 、文檔容錯能力強Python 2.7.3 or 3.2.2 前的版本中文容錯能力差lxml HTML 解析器BeautifulSoup (html文件, “lxml”)速度快、文檔容錯能力強需要安裝 C 語言庫 lxmllxml XML解析器解析器 BeautifulSoup (html文件, “xml”)速度快、唯一支持 XML 的解析器需要安裝 C 語言庫 lxmlhtml5lib 解析器BeautifulSoup (html文件, “html5lib”)最好的容錯性、以浏覽器的方式解析文檔生成 HTML5 文檔速度慢、不依賴外部擴展

lxml HTML 解析器有解析 HTML 和 XML 的功能,並且速度快,文檔容錯能力強,所以推薦使用,使用前要先安裝lxml。

2、BautifulSoup 安裝

BautifulSoup 安裝位置:Python安裝目錄的Scripts文件夾下

安裝命令:pip install bs4

如圖所示則下載成功:

3、BautifulSoup 基本使用

待解析的 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'}

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved