2022年7月21日 星期四

好站 : 7個Python使用BeautifulSoup開發網頁爬蟲的實用技巧

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 筆記卻寫了好久都還沒完成, 這篇就列入參考唄.  

沒有留言:

張貼留言