本篇文章主要講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)