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

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