Beautiful Soup在爬蟲中的基本使用語法

許小倉發表於2020-12-01

Beautiful Soup 是什麼

Beautiful Soup是python 的一個HTML 或 XML的解析庫,藉助網頁的結構和屬性特徵來解析網頁,便於使用者抓取資料。

Beautiful Soup能夠自動將輸入的文件轉化為Unicode,輸出的文件轉換為UTF-8,這大大提高了文件提取的效率。

選擇相應資訊

基本用法如下

BeautifulSoup(markup, 'lxml')
from bs4 import BeautifulSoup
import requests

url = 'https://github.com/github'

# 構造一個html文件
r = requests.get(url).text

soup = BeautifulSoup(r, 'lxml')
# prettify 可以把要解析的字串以標準的HTML輸出
print(soup.prettify)
# 輸出HTML中title的內容
print(soup.title.string)

選擇相應的節點,直接使用soup.title/soup.head/soup.p等,即可獲取資訊。需要注意的是soup.p,只能獲取第一個節點的p

from bs4 import BeautifulSoup
import requests

url = 'https://github.com/github'
# 構造一個html文件
r = requests.get(url).text

soup = BeautifulSoup(r, 'lxml')

# prettify 可以把要解析的字串以標準的HTML輸出
print(soup.prettify)
# 輸出title
print(soup.title)
# 輸出HTML中title文字的值
print(soup.title.string)
# 輸出head
print(soup.head)
# 輸出節點p
print(soup.p)

方法選擇器

面對複雜的網頁結構,採用屬性來選擇比較麻煩,這就需要使用find_all(),find()進行選擇了。

find_all()

它的API如下

find_all(name, attrs, recursive, text, **kwargs)

表示:

name:根據節點名查詢

attrs:通過傳入屬性查詢

text:用來匹配節點的文字

find()的用法與find_all()的用法一樣,區別是fin()返回的是單個元素,find_all()返回的是所有元素。

基本語法:

from bs4 import BeautifulSoup
import requests

url = 'https://github.com/github'
# 構造一個html文件
r = requests.get(url).text

soup = BeautifulSoup(r, 'lxml')

# 根據節點名查詢
print(soup.find_all(name='ul'))
# 通過傳入屬性查詢
print(soup_find_all(attrs={'id': 'list-1'}))
print(soup_find_all(attrs={'name': 'elements'}))
# 用來匹配節點的文字
print(soup.find_all(text=re.compile('link')))

CSS選擇器

如果對CSS選擇器熟悉的話,可以使用select進行選擇。

此文不做說明,更多CSS資訊請檢視這裡

參考資料

《python3 網路爬蟲開發實戰》 崔慶才著

Change Log

20201201 建立

相關文章