BeautifulSoup模組的使用方法

阿麗米熱發表於2023-03-17

本篇文章主要講bs4模組(BeautifulSoup),這個模組能做麼呢?用一句話來概括的話:beautifulsoup4 從HTML或XML檔案中提取資料的Python庫,用它來解析爬取回來的xml。從而從網站中精準爬取自己想要的內容。
它是Python的第三方模組,因此需要下載

pip install pip install beautifulsoup4

這個模組與另一個lxml(解析庫)模組配合這個用

pip install lxml

最基本用法

html_doc = '需要解析的HTML內容'
soup = BeautifulSoup(html_doc, 'lxml')

一、BeautifulSoup遍歷檔案樹

1. 美化,不是標準xml,完成美化
print(soup.prettify())

2. 遍歷檔案樹(透過點來遍歷)
print(soup.html.body.p)  # 一層一層找

3. 獲取標籤的名稱
print(soup.a.name)

4. 獲取標籤的屬性
print(soup.a.attrs.get('class'))

5. 獲取標籤的內容
print(soup.p.text)
print(list(soup.p.strings)) # generator

二、BeautifulSoup搜尋檔案樹

2. 透過find或find_all來搜尋

# 1 字串--->查詢的條件是字串
res=soup.find_all(name='p')
res=soup.find_all('p')
print(res)

# 2 正規表示式
import re
res=soup.find_all(class_=re.compile('^s'))
print(res)

# 3 列表
res=soup.find_all(id=['link1','link2'])
print(res)
print(soup.find_all(name=['a','b']))
print(soup.find_all(['a','b']))


# 4 True
res=soup.find_all(id=True)  # 所有有id的標籤
res=soup.find_all(href=True)
res=soup.find_all(class_=True)
print(res)

3. 透過css選擇器來搜尋

其實css選擇器是前端重點內容,但是對於後端程式設計師而言會用就行,這裡我放大招哈哈哈
首先去瀏覽器右鍵檢查、然後用定位箭頭定位目的地、點選對用的HTML右鍵、選擇copy、再現在copy selector 按照這個步驟就快速得到一個css選擇器咯,css選擇器大痛點解決之後,接下來我們看一下如何用css選擇器搜尋檔案樹吧,具體請看如下程式碼框

from bs4 import BeautifulSoup
import requests
res=requests.get('https://www.w3school.com.cn/css/css_selector_attribute.asp')
soup=BeautifulSoup(res.text,'lxml')
print(soup.select('#intro > p:nth-child(1) > strong')[0].text)

相關文章