網頁爬蟲這項技能,早就從以前的冷門小眾,變成現在銷售、營運、行銷人員的日常必備工具。隨著網路上的資料量爆炸成長——全球資料產生量從 2019 年到 2023 年直接暴增了快 —,難怪現在有 把資料當成決策的核心。不過現實很骨感,都覺得處理非結構化資料(像是亂七八糟的 HTML)超級頭痛。我看過太多團隊為了把網站資訊整理進 Excel,結果卡在無止盡的複製貼上地獄——真的會讓人崩潰。
這時候 Python 的 BeautifulSoup 就超好用啦。這篇教學會手把手帶你用 BeautifulSoup 實作網頁爬蟲,還有一個實用的 Python Beautiful Soup 範例,讓你可以根據自己的需求彈性運用。更讚的是,我還會教你怎麼搭配 ,我們家的人工智慧網頁爬蟲,無論你會不會寫程式,都能大幅提升效率,拿到乾淨又結構化的資料。
什麼是 BeautifulSoup?為什麼適合做網頁爬蟲?
先從基礎開始。 是一個 Python 函式庫,可以輕鬆解析 HTML 和 XML 文件。你可以把它想像成一個翻譯機:它能把網頁那堆「標籤湯」變成好操作的樹狀結構,讓你輕鬆找到、提取、處理你要的資料。不管你是要抓電商網站的商品價格、收集新聞標題,還是從商業名錄挖潛在客戶,BeautifulSoup 都是把網頁變成結構化資料的首選。
為什麼大家都愛用?首先,它對新手超級友善。BeautifulSoup 能包容亂七八糟的 HTML(畢竟網頁世界本來就很亂),而且語法簡單,幾行程式就能開始爬。再來,它有很大的用戶社群和一堆資源,遇到問題 Google 一下就有答案。
常見的 BeautifulSoup 應用場景像是:
- 從電商頁面抓商品名稱、價格、評分
- 抓新聞網站的標題、作者、發佈日期
- 解析表格或名錄(像公司或聯絡人清單)
- 從分類網站收集 email 或電話
- 監控網站更新(價格變動、新職缺等)
只要你的資料在靜態 HTML 裡,BeautifulSoup 就是你最可靠的網頁爬蟲夥伴。
BeautifulSoup 做網頁爬蟲的獨特優勢
市面上 Python 網頁爬蟲函式庫一堆——那為什麼要選 BeautifulSoup?它的優點有:
- 簡單易學: BeautifulSoup 輕量、上手快,不用搞一堆複雜框架或寫一堆樣板,非常適合新手或臨時小型爬蟲任務。
- 容錯力強: 能處理破損或格式亂掉的 HTML,這在現實網頁超常見。
- 彈性高: 不會強迫你用特定架構,只要給它 HTML 就能自由提資料。
- 超好整合: 能和
requests(抓網頁)、csv(存資料)、pandas(資料分析)等 Python 套件無縫搭配。
和其他工具比較:
| 工具 | 最適合用途 | 優點 | 缺點 |
|---|---|---|---|
| BeautifulSoup | 靜態 HTML 解析、新手入門 | 簡單、快速上手、容錯、彈性高 | 不適合 JavaScript 動態網頁 |
| Scrapy | 大型、非同步爬蟲任務 | 強大、可擴展、內建爬蟲架構 | 學習曲線較陡、設定較繁瑣 |
| Selenium | JavaScript/動態內容 | 可操作 JS、填表單、點擊按鈕 | 執行較慢、資源消耗大 |
如果你剛入門或只想快速解析靜態頁面,BeautifulSoup 就像網頁爬蟲界的瑞士刀()。遇到複雜或動態網站,可以搭配 Selenium 或 Scrapy,但 BeautifulSoup 絕對是學習網頁爬蟲的最佳起點。
BeautifulSoup 環境安裝教學
準備動手了嗎?安裝步驟如下:
-
安裝 Python: 到 下載最新版。
-
建立虛擬環境(建議但不強制):
1python -m venv venv 2source venv/bin/activate # Windows 用 venv\Scripts\activate -
安裝 BeautifulSoup 及相關套件:
1pip install beautifulsoup4 requests lxml html5libbeautifulsoup4:主程式庫requests:抓網頁lxml或html5lib:更快、更穩定的 HTML 解析器
-
常見問題排解:
- 如果出現 “pip not found” 錯誤,試試
pip3或py -m pip。 - Mac/Linux 可能要加
sudo權限。 - Windows 請確認 Python 有加到 PATH。
- 如果出現 “pip not found” 錯誤,試試
測試安裝有沒有成功:
1from bs4 import BeautifulSoup
2import requests
3html = requests.get("http://example.com").text
4soup = BeautifulSoup(html, "html.parser")
5print(soup.title)
如果看到 <title>Example Domain</title>,就代表安裝成功()。
Python Beautiful Soup 實戰範例
來看一個實際的 python beautiful soup 範例。假設你想抓新聞網站的最新標題,步驟如下:
1. 抓取網頁內容
1import requests
2from bs4 import BeautifulSoup
3url = "https://www.bbc.com/news"
4response = requests.get(url)
5html = response.text
2. 解析 HTML
1soup = BeautifulSoup(html, "html.parser")
3. 檢查 HTML 結構
打開瀏覽器的開發者工具(右鍵→檢查),找出標題的標籤。很多新聞網站的標題會在 <h3> 標籤,還會有特定 class。
例如:
1<h3 class="gs-c-promo-heading__title">Headline Title</h3>
4. 提取資料
1headlines = soup.find_all("h3", class_="gs-c-promo-heading__title")
2for h in headlines:
3 print(h.get_text(strip=True))
這樣就能列出所有新聞標題。
5. 儲存資料到 CSV
把標題存下來,方便後續分析:
1import csv
2with open("headlines.csv", "w", newline='', encoding="utf-8") as file:
3 writer = csv.writer(file)
4 writer.writerow(["headline"])
5 for h in headlines:
6 writer.writerow([h.get_text(strip=True)])
這樣你就有一份可以直接丟進 Excel 或 Google Sheets 的 CSV 檔。
如何看懂 HTML 結構,精準抓取資料
寫程式前,記得先檢查網頁的 HTML 結構。方法如下:
- 開啟開發者工具: 右鍵網頁→檢查。
- 定位資料位置: 滑鼠移到元素上,找出包含目標資料的標籤(像標題、價格、作者)。
- 記下標籤和 class/id: 找像
class="product-title"或id="main-content"這種獨特標示。 - 測試選擇器: 用 BeautifulSoup 的
.find()、.find_all()或.select()方法鎖定元素。
小技巧:用 soup.prettify() 可以在 Python 主控台印出漂亮的 HTML 結構,超方便閱讀。
用 BeautifulSoup 提取並結構化資料
假設你想同時抓部落格文章的標題和作者:
1articles = soup.find_all("article")
2data = []
3for article in articles:
4 title = article.find("h2").get_text(strip=True)
5 author = article.find("span", class_="author").get_text(strip=True)
6 data.append({"title": title, "author": author})
這樣就得到一個字典清單,之後要匯出 CSV 或進一步分析都很方便。
要抓連結、圖片或其他屬性也很簡單:
1for link in soup.find_all("a"):
2 print(link.get("href"))
或圖片:
1for img in soup.find_all("img"):
2 print(img.get("src"))
資料匯出:從 Python 到 Excel 或 CSV
資料整理好後,匯出也很簡單。用 csv 模組:
1import csv
2with open("articles.csv", "w", newline='', encoding="utf-8") as file:
3 writer = csv.DictWriter(file, fieldnames=["title", "author"])
4 writer.writeheader()
5 for row in data:
6 writer.writerow(row)
或你偏好 pandas:
1import pandas as pd
2df = pd.DataFrame(data)
3df.to_csv("articles.csv", index=False)
4df.to_excel("articles.xlsx", index=False)
記得用 UTF-8 編碼,避免國際資料亂碼。
實例解析:用 BeautifulSoup 抓取新聞網站資料
來看一個實戰 python beautiful soup 範例:抓新聞網站的文章標題、作者和發佈日期。
假設你想從 抓文章資料:
1import requests
2from bs4 import BeautifulSoup
3import csv
4url = "https://edition.cnn.com/world"
5response = requests.get(url)
6soup = BeautifulSoup(response.content, "html.parser")
7articles = soup.find_all("article")
8data = []
9for article in articles:
10 title_tag = article.find("h3")
11 date_tag = article.find("span", class_="date")
12 author_tag = article.find("span", class_="author")
13 title = title_tag.get_text(strip=True) if title_tag else ""
14 date = date_tag.get_text(strip=True) if date_tag else ""
15 author = author_tag.get_text(strip=True) if author_tag else ""
16 data.append({"title": title, "date": date, "author": author})
17with open("cnn_articles.csv", "w", newline='', encoding="utf-8") as file:
18 writer = csv.DictWriter(file, fieldnames=["title", "date", "author"])
19 writer.writeheader()
20 for row in data:
21 writer.writerow(row)
這段程式會抓最新文章,提取標題、日期和作者,並存成 CSV。你可以用這些資料做競品追蹤、趨勢分析或內容研究,完全看你的商業需求。
進階應用:結合 BeautifulSoup 與 Thunderbit
接下來聊聊怎麼讓你的爬蟲流程更順。 是一款 AI 驅動的 Chrome 網頁爬蟲擴充功能,能大幅簡化資料提取流程。用 Thunderbit,你可以:
- AI 智能欄位建議: Thunderbit 會自動分析頁面,推薦可提取的資料欄位,省去手動找 HTML 或調整選擇器的麻煩。
- 抓取子頁面: Thunderbit 能自動點擊連結,深入子頁(像商品或文章詳情頁),讓資料更完整。
- 一鍵匯出: 資料可直接匯出到 Excel、Google Sheets、Airtable 或 Notion。
- 自動分頁處理: 支援多頁面(甚至無限滾動)資料抓取。
- 排程爬蟲: 可設定定期自動抓取,確保資料即時更新。
我最愛的混合工作流程是:
- 先用 Thunderbit: 開啟目標網站,點 Thunderbit 圖示,讓「AI 智能欄位建議」自動找出標題、作者、日期等欄位。
- 匯出資料: 下載成 CSV 或直接傳到 Google Sheets。
- 用 BeautifulSoup 進行自訂處理: 如果要進一步分析(像文字清理、去重、合併其他資料),就把匯出的 CSV 載入 Python,搭配 BeautifulSoup 或 pandas 做後處理。
這種組合讓你同時享有 Thunderbit 的 AI 速度與自動欄位偵測,還有 BeautifulSoup 的彈性與自訂能力。
速度與資料品質:為什麼要結合 Thunderbit 與 BeautifulSoup?
為什麼要兩個一起用?我的經驗是:
- 效率大提升: Thunderbit 可以同時平行抓數十個頁面(雲端模式下最多 50 個),資料幾分鐘就到手。
- 資料完整性: Thunderbit 的 AI 能適應版面變動,從複雜網站也能抓到結構化資料,減少遺漏欄位。
- 降低錯誤率: 不用怕 class 名稱變動導致程式壞掉,Thunderbit 的 AI 每次都會重新分析頁面。
- 自訂後處理: 進階需求(像篩選、翻譯、合併資料集)可以用 BeautifulSoup 和 pandas 完全掌控。
這種混合方式特別適合:
- 大規模名單蒐集: 用 Thunderbit 快速抓大量資料,再用 BeautifulSoup 清理和補充。
- 商品監控: Thunderbit 處理重複性抓取,BeautifulSoup 分析趨勢或異常。
- 新聞與內容追蹤: Thunderbit 快速收集文章,Python 進行情感分析或關鍵字提取。
BeautifulSoup 網頁爬蟲常見問題與排解
網頁爬蟲不可能永遠順利,常見問題和解法如下:
- 動態內容: 如果網站用 JavaScript 載入資料(像無限滾動、AJAX),單靠 BeautifulSoup 看不到。這時可以用 Selenium 或 Thunderbit 的瀏覽器模式。
- 反爬蟲機制: 有些網站會擋自動請求。可以試著自訂 User-Agent、拉長請求間隔,或用 Thunderbit 雲端爬蟲繞過簡單封鎖。
- HTML 結構變動: 程式突然壞掉,通常是網站 HTML 改版。重新檢查頁面並更新選擇器。Thunderbit 的 AI 可自動適應。
- 資料遺漏: 取值前先檢查元素有沒有存在,屬性建議用
.get()取代[],避免 KeyError。 - 編碼問題: 存檔時請用 UTF-8,避免特殊字元亂碼。
最後,記得遵守網站的 robots.txt 和服務條款,做個有禮貌的爬蟲,不要造成對方困擾。
結論與重點整理
學會用 BeautifulSoup 做網頁爬蟲,絕對是現在資料時代最實用的技能之一。本篇 beautifulsoup 網頁爬蟲教學重點如下:
- BeautifulSoup 是解析靜態 HTML、用 Python 抓結構化資料的最佳入門工具。
- 安裝設定超簡單——只要安裝 Python、pip 和幾個套件就好。
- 學會看 HTML 結構,才能精準抓到你要的資料。
- 匯出 CSV/Excel,讓資料馬上能用於商業分析。
- 結合 Thunderbit,享受 AI 欄位偵測、快速爬蟲和一鍵匯出,適合商業用戶和沒寫過程式的人。
- 混合工作流程(Thunderbit 批量抓取,BeautifulSoup 客製處理)兼顧速度、資料品質和彈性。
想提升你的網頁爬蟲效率,不妨兩種工具都玩玩看:先寫個簡單的 BeautifulSoup 腳本,再體驗 的極速抓取。更多實用教學,歡迎來 逛逛。
祝你爬蟲順利,資料永遠乾淨、結構化、隨時可用!
常見問題
1. 什麼是 BeautifulSoup?有什麼用途?
BeautifulSoup 是一個 Python 函式庫,用來解析 HTML 和 XML 文件。它能幫你從網頁中提取資料,轉成清楚的清單或表格,非常適合做網頁爬蟲。
2. BeautifulSoup 和 Selenium、Scrapy 有什麼不同?
BeautifulSoup 適合靜態 HTML 頁面,輕量又好上手。Selenium 適合抓動態、JavaScript 網站,Scrapy 則是大型、非同步爬蟲的完整框架。新手和小型任務首選 BeautifulSoup。
3. BeautifulSoup 可以和 Thunderbit 一起用嗎?
當然可以。Thunderbit 能用 AI 快速辨識並提取網頁欄位,BeautifulSoup 則可用於自訂後處理或更深入的資料分析。
4. 用 BeautifulSoup 做網頁爬蟲常見挑戰有哪些?
常見問題包括處理動態內容、反爬蟲機制,以及 HTML 結構變動。善用 Thunderbit 的 AI 功能或瀏覽器模式,可以解決多數困難。
5. 如何把 BeautifulSoup 抓到的資料匯出成 Excel 或 CSV?
可以用 Python 內建的 csv 模組或 pandas 套件,將資料寫入 CSV 或 Excel。記得用 UTF-8 編碼,確保特殊字元正確顯示,跟試算表工具相容。
想親自體驗嗎?立刻下載 ,開始更聰明地抓資料。更多教學和技巧,歡迎來 看看。
延伸閱讀