如何使用 BeautifulSoup:Python 網頁爬蟲教學

最後更新於 February 2, 2026

網頁爬蟲這項技能,早就從以前的冷門小眾,變成現在銷售、營運、行銷人員的日常必備工具。隨著網路上的資料量爆炸成長——全球資料產生量從 2019 年到 2023 年直接暴增了快 —,難怪現在有 把資料當成決策的核心。不過現實很骨感,都覺得處理非結構化資料(像是亂七八糟的 HTML)超級頭痛。我看過太多團隊為了把網站資訊整理進 Excel,結果卡在無止盡的複製貼上地獄——真的會讓人崩潰。

這時候 Python 的 BeautifulSoup 就超好用啦。這篇教學會手把手帶你用 BeautifulSoup 實作網頁爬蟲,還有一個實用的 Python Beautiful Soup 範例,讓你可以根據自己的需求彈性運用。更讚的是,我還會教你怎麼搭配 ,我們家的人工智慧網頁爬蟲,無論你會不會寫程式,都能大幅提升效率,拿到乾淨又結構化的資料。

什麼是 BeautifulSoup?為什麼適合做網頁爬蟲?

beautifulsoup-web-scraping-overview.png 先從基礎開始。 是一個 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大型、非同步爬蟲任務強大、可擴展、內建爬蟲架構學習曲線較陡、設定較繁瑣
SeleniumJavaScript/動態內容可操作 JS、填表單、點擊按鈕執行較慢、資源消耗大

如果你剛入門或只想快速解析靜態頁面,BeautifulSoup 就像網頁爬蟲界的瑞士刀()。遇到複雜或動態網站,可以搭配 Selenium 或 Scrapy,但 BeautifulSoup 絕對是學習網頁爬蟲的最佳起點。

BeautifulSoup 環境安裝教學

準備動手了嗎?安裝步驟如下:

  1. 安裝 Python: 下載最新版。

  2. 建立虛擬環境(建議但不強制):

    1python -m venv venv
    2source venv/bin/activate  # Windows 用 venv\Scripts\activate
  3. 安裝 BeautifulSoup 及相關套件:

    1pip install beautifulsoup4 requests lxml html5lib
    • beautifulsoup4:主程式庫
    • requests:抓網頁
    • lxmlhtml5lib:更快、更穩定的 HTML 解析器
  4. 常見問題排解:

    • 如果出現 “pip not found” 錯誤,試試 pip3py -m pip
    • Mac/Linux 可能要加 sudo 權限。
    • Windows 請確認 Python 有加到 PATH。

測試安裝有沒有成功:

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 結構。方法如下:

  1. 開啟開發者工具: 右鍵網頁→檢查。
  2. 定位資料位置: 滑鼠移到元素上,找出包含目標資料的標籤(像標題、價格、作者)。
  3. 記下標籤和 class/id: 找像 class="product-title"id="main-content" 這種獨特標示。
  4. 測試選擇器: 用 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。
  • 自動分頁處理: 支援多頁面(甚至無限滾動)資料抓取。
  • 排程爬蟲: 可設定定期自動抓取,確保資料即時更新。

我最愛的混合工作流程是:

  1. 先用 Thunderbit: 開啟目標網站,點 Thunderbit 圖示,讓「AI 智能欄位建議」自動找出標題、作者、日期等欄位。
  2. 匯出資料: 下載成 CSV 或直接傳到 Google Sheets。
  3. 用 BeautifulSoup 進行自訂處理: 如果要進一步分析(像文字清理、去重、合併其他資料),就把匯出的 CSV 載入 Python,搭配 BeautifulSoup 或 pandas 做後處理。

這種組合讓你同時享有 Thunderbit 的 AI 速度與自動欄位偵測,還有 BeautifulSoup 的彈性與自訂能力。

速度與資料品質:為什麼要結合 Thunderbit 與 BeautifulSoup?

thunderbit-beautifulsoup-data-pipeline.png 為什麼要兩個一起用?我的經驗是:

  • 效率大提升: 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 腳本,再體驗 的極速抓取。更多實用教學,歡迎來 逛逛。

祝你爬蟲順利,資料永遠乾淨、結構化、隨時可用!

體驗 Thunderbit 人工智慧網頁爬蟲

常見問題

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 編碼,確保特殊字元正確顯示,跟試算表工具相容。

想親自體驗嗎?立刻下載 ,開始更聰明地抓資料。更多教學和技巧,歡迎來 看看。

延伸閱讀

Shuai Guan
Shuai Guan
Co-founder/CEO @ Thunderbit. Passionate about cross section of AI and Automation. He's a big advocate of automation and loves making it more accessible to everyone. Beyond tech, he channels his creativity through a passion for photography, capturing stories one picture at a time.
Topics
Python beautiful soup 範例BeautifulSoup 網頁爬蟲教學
目錄

立即體驗 Thunderbit

兩步驟快速擷取名單與資料,AI 智能驅動。

下載 Thunderbit 免費體驗
用 AI 擷取資料
一鍵匯出到 Google Sheets、Airtable 或 Notion
Chrome Store Rating
PRODUCT HUNT#1 Product of the Week