BeautifulSoup 是寫 Python 爬蟲程式必用的套件, 只要不是 Javscript 產生的網頁都能用它搭配 requests 套件來順利抓到想要擷取的資料, 與我很多年之前用 PHP 寫網路爬蟲相比, 真的是簡單到不行, 用過之後根本不會想回去用 PHP 了.
今天在整理瀏覽器頁籤時看到暫存了好久的一篇文章, 寫得簡單扼要, 值得一讀 :
其實 Python 網頁爬蟲程式的基本結構很簡單, 匯入 requests 與 BeautifulSoup 後就用 requests.get() 擷取網頁, 然後將回應物件的 text 屬性值丟給 BeautifulSoup 解析網頁內容, 建立 BeautifulSoup 物件即可, 基本的程式結構如下 :
import requests
from bs4 import BeautifulSoup
headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) \
AppleWebKit/537.36 (KHTML, like Gecko) \
Chrome/102.0.0.0 Safari/537.36'}
url='要抓的網頁網址'
r=requests.get(url, headers=headers)
soup=BeautifulSoup(r.text, 'lxml')
然後就可以呼叫它最常用四個方法去抓資料了 :
- find(tag [, 屬性=值, limit=個數]) :
傳回第一個找到的 Tag 物件. - find_all(tag [, 屬性=值, limit=個數]) :
傳回所有符合之 Tag 物件組成之串列. 第一參數也可以傳入標籤串列, 例如 ['a','span']. - select_one(tag) :
傳回第一個找到的 Tag 物件. - select(css [, limit=個數]) :
第一參數是 css 字串, 例如 '.book' 是傳回 id=book 的 Tag 物件串列 (只有一個元素); 而 '#book' 則是傳回 class=book 的 Tag 物件串列.
注意, 若屬性為樣式類別時不可用 class (關鍵字), 必須改用 class_ 才行.
雖然常常在寫爬蟲, 但我的 BeautifulSoup 筆記卻寫了好久都還沒完成, 這篇就列入參考唄.
沒有留言:
張貼留言