目錄
-
Beautiful Soup庫的安裝
- Beautiful Soup庫的安裝小測
- Beautiful Soup庫使用格式
-
Beautiful Soup庫的基本元素
- Beautiful Soup庫的理解
- Beautiful Soup庫的引用
- BeautifulSoup類
- Beautiful Soup庫解析器
-
BeautifulSoup類的基本元素
- Tag標簽
- Tag的name(名字)
- Tag的attrs(屬性)
- Tag的NavigableString
- Tag的Comment
-
基于bs4庫的HTML內容遍歷方法
- 標簽樹的下行遍歷
- 標簽樹的上行遍歷
- 標簽樹的平行遍歷
-
基于bs4庫的HTML格式輸出
- bs4庫的prettify()方法
- bs4庫的編碼
Beautiful Soup庫的安裝
Win平臺: 以管理員身份運行
cmd 執行
pip install beautifulsoup4
Beautiful Soup庫的安裝小測
- 首先,獲取網頁源碼保存至變量中
import requests
r = requests.get("https://python123.io/ws/demo.html")
demo = r.text
-
其次,引入Beautiful Soup庫。
from bs4 import BeautifulSoup
- 使用Beautiful Soup庫的html解析器對網頁源碼進行解析。得到結果
- 通過prettify()方法進行顯示
from bs4 import BeautifulSoup
soup = BeautifulSoup(demo, "html.parser") # 使用html解析器進行解析
print(soup.prettify()) # 打印解析后的結果
Beautiful Soup庫使用格式
from bs4 import BeautifulSoup
soup = BeautifulSoup('
data
','html.parser')
Beautiful Soup庫的基本元素
Beautiful Soup庫的理解
Beautiful Soup庫是解析、遍歷、維護“標簽樹”的功能庫
Beautiful Soup庫的引用
Beautiful Soup庫,也叫beautifulsoup4 或bs4 約定引用方式如下,即主要是用BeautifulSoup類
from bs4 import BeautifulSoup importbs4
BeautifulSoup類
BeautifulSoup對應一個HTML/XML文檔的全部內容
Beautiful Soup庫解析器
soup=BeautifulSoup('data', 'html.parser' )
解析器 | 使用方法 | 條件 |
---|---|---|
bs4的HTML解析器 | BeautifulSoup(mk,'html.parser') | 安裝bs4庫 |
lxml的HTML解析 | BeautifulSoup(mk,'lxml') | pip install lxml |
lxml的XML解析 | BeautifulSoup(mk,'xml') | pip install lxml |
html5lib的解析 | BeautifulSoup(mk,'html5lib') | pip install html5lib |
BeautifulSoup類的基本元素
基本元素 | 說明 |
---|---|
Tag | 標簽,最基本的信息組織單元,分別用<>和標明開頭和結尾 |
Name |
標簽的名字,
… 的名字是'p',格式: .name |
Attributes | 標簽的屬性,字典形式組織,格式: .attrs |
NavigableString | 標簽內非屬性字符串,<>…中字符串,格式: .string |
Comment | 標簽內字符串的注釋部分,一種特殊的Comment類型 |
Tag標簽
任何存在于HTML語法中的標簽都可以用soup. 訪問獲得 當HTML文檔中存在多個相同 對應內容時,soup. 返回第一個
Tag的name(名字)
每個 都有自己的名字,通過 .name獲取,字符串類型
Tag的attrs(屬性)
一個 可以有0或多個屬性,字典類型
Tag的NavigableString
NavigableString可以跨越多個層次
Tag的Comment
Comment是一種特殊類型
基于bs4庫的HTML內容遍歷方法
HTML基本格式
標簽樹的下行遍歷
BeautifulSoup類型是標簽樹的根節點
屬性 | 說明 |
---|---|
.contents | 子節點的列表,將 所有兒子節點存入列表 |
.children | 子節點的迭代類型,與.contents類似,用于循環遍歷兒子節點 |
.descendants | 子孫節點的迭代類型,包含所有子孫節點,用于循環遍歷 |
for child?in soup.body.children: # 遍歷兒子節點
print(child)
for child?in soup.body.descendants: # 遍歷子孫節點
print(child)
標簽樹的上行遍歷
屬性 | 說明 |
---|---|
.parent | 節點的父親標簽 |
.parents | 節點先輩標簽的迭代類型,用于循環遍歷先輩節點 |
標簽樹的平行遍歷
屬性 | 說明 |
---|---|
.next_sibling | 返回按照HTML文本順序的下一個平行節點標簽 |
.previous_sibling | 返回按照HTML文本順序的上一個平行節點標簽 |
.next_siblings | 迭代類型,返回按照HTML文本順序的后續所有平行節點標簽 |
.previous_siblings | 迭代類型,返回按照HTML文本順序的前續所有平行節點標簽 |
for sibling?in soup.a.next_sibling: # 遍歷后續節點
print(sibling)
for sibling?in soup.a.previous_sibling: # 遍歷前續節點
print(sibling)
基于bs4庫的HTML格式輸出
能否讓HTML內容更加“友好”的顯示?
bs4庫的prettify()方法
.prettify()為HTML文本<>及其內容增加更加'\n'
.prettify()可用于標簽,方法: .prettify()
bs4庫的編碼
bs4庫將任何HTML輸入都變成utf‐8編碼 Python 3.x默認支持編碼是utf‐8,解析無障礙
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
