如何使用 Python 抓取網頁:新手入門指南

最後更新:July 21, 2026
如何使用 Python 抓取網頁:新手入門指南

很多公司卡在同一個地方:想要的資料明明攤在公開網頁上,卻沒有「匯出」按鈕,只能靠人一列一列複製。網頁爬取這幾年從工程師的專屬技能,變成業務、營運、行銷都在碰的能力,原因就在這裡。市場數字也撐得住這個轉向:超過 65% 的企業 會用網頁爬蟲工具與擷取到的資料來推動 AI 專案,替代資料市場規模也逼近 50 億美元ai-data-growth-2025-web-scraping-market.png

要自己動手,Python 是門檻最低的一條路:語法好讀、函式庫齊全,寫出來的東西比較像一位不會喊累的助理,幫你把網頁上的欄位搬進試算表。這份指南會把基本觀念、能派上用場的商業場景,以及一份可以照著跑的範例流程講清楚,最後也會談到 Thunderbit 這類不用寫程式的替代方案。

用 Python 做網頁爬取,到底在做什麼

網頁爬取講白了就是把「人在瀏覽器上看得到的資訊」自動抓成結構化資料。想比對競品價格、想把徵才頁上的職缺整理成清單,與其一筆一筆手動貼(貼到第三十筆通常就想放棄),不如寫一段程式讓它自己跑完。

Python 之所以成為預設選項,關鍵在生態系夠成熟:從發送請求、解析 HTML 到資料清理,每一段都有現成的函式庫接手。實務上也是如此,接近 70% 的網頁爬取從業者都使用 Pythonpython-web-scraping-usage-statistics-70-percent.png 入門階段會反覆用到的,其實只有兩個核心函式庫:

  • Requests:負責跟網站「溝通」,把頁面的 HTML 抓下來。
  • BeautifulSoup:負責在 HTML 裡「尋寶」,找出並擷取你要的資料。

如果你曾經從網站複製資訊貼到 Excel,那就是最原始版本的爬取,Python 只是把同一件事變成可規模化、不會中途分心的流程。

為什麼值得學:企業實際用在哪

Python 網頁爬取不是拿來炫技的玩具,它解決的是很具體的資料取得問題。企業最常見的幾種用法整理如下:

應用場景目標網站商業效益
價格監控Amazon、Walmart、競品網站維持競爭力、自動化定價、掌握促銷活動
潛在客戶開發LinkedIn、YellowPages、Google Maps建立名單、推動開發外聯、減少對昂貴資料供應商的依賴
競品產品追蹤SaaS 功能頁、電商網站追蹤新功能、庫存或價格變化
職缺市場分析Indeed、LinkedIn Jobs、企業網站掌握招募趨勢、調整徵才策略
房地產研究Zillow、Realtor.com、Craigslist找出投資機會、追蹤價格趨勢
內容彙整新聞網站、部落格、論壇監測趨勢、蒐集評論、自動化研究流程

這些場景的共通點是「時效」:把蒐集流程自動化的團隊,能更早看到價格變動與競品動作,也能把人力挪去做判斷而不是複製貼上。73.5% 的資料領先企業管理者 在各項決策上都依賴網路資料,理由大致相同。

動手前要先裝的三個函式庫

  • Requests:發送 HTTP 請求、取回網頁內容,可以理解成一個寫成程式碼的瀏覽器。
    安裝方式:

    pip install requests
    
  • BeautifulSoup:解析 HTML 與 XML 文件,讓你用標籤和 class 精準定位資料。
    安裝方式:

    pip install beautifulsoup4
    
  • Selenium(選用):直接操控真實瀏覽器,適合資料靠 JavaScript 動態載入的網站,例如無限捲動、點開才顯示的內容。
    安裝方式:

    pip install selenium
    

    (另外還需要像 ChromeDriver 這樣的瀏覽器驅動程式。)

第一個練習專案不用想太多,Requests 加 BeautifulSoup 就足以應付大多數靜態頁面。

先看懂 HTML,再決定要抓什麼

程式能不能抓到資料,取決於你有沒有先找到資料的位置。網站是用 HTML 搭起來的,本質上是由 <div><p><a> 等元素組成的樹狀結構。

常用標籤先記這幾個:

  • <h1>, <h2>, ... <h6>:標題(通常代表頁面主題)
  • <p>:段落(描述、評論)
  • <a>:連結(含 href 屬性)
  • <ul>,
  • `:清單(搜尋結果、功能列表)
  • <table>, <tr>, <td>:表格(資料欄位)
  • <div>, <span>:通用容器(通常搭配 classid 屬性)

實務做法: 在頁面上按右鍵選「檢查元素」,滑鼠移到目標資料上,瀏覽器就會標出對應的標籤與 class。以商品頁為例,價格常常長這樣:<p class="price_color">£51.77</p>,這串 class 名稱就是程式裡要鎖定的目標。

實作教學:一步一步抓下一筆資料

以下用練習專用的 Books to Scrape 網站示範,目標是抓出一本書的標題、價格和評分。

第 1 步:把環境準備好

先確認電腦上有 Python 3,可到 python.org 下載。編輯器建議用 VS CodePyCharm,先拿記事本頂著也行。

打開終端機安裝函式庫:

pip install requests beautifulsoup4

建立一個叫做 web_scraper.py 的新檔案,先把函式庫匯入:

import requests
from bs4 import BeautifulSoup

第 2 步:發送 HTTP 請求取回頁面

第一件事是把頁面抓下來:

url = "https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html"
response = requests.get(url)
print(response.status_code)  # 如果成功,應該會印出 200

看到 200 就代表請求成功,整份 HTML 已經放在 response.text 裡。

第 3 步:用 BeautifulSoup 解析 HTML

接著把這串字串交給解析器,Python 才有辦法按標籤查詢:

soup = BeautifulSoup(response.content, 'html.parser')

第 4 步:擷取並整理資料

標題、價格、評分各抓一次:

title = soup.find('h1').text
price = soup.find('p', class_='price_color').text
rating_element = soup.find('p', class_='star-rating')
rating_classes = rating_element.get('class')
rating = rating_classes[1]  # 例如 "Three"

價格抓下來是字串,先轉成數字才方便後續運算:

price_num = float(price.lstrip('£'))  # "£51.77" -> 51.77

真實網站上欄位缺漏是常態,多加一層判斷可以避免整支程式中斷:

price_element = soup.find('p', class_='price_color')
price = price_element.text.strip() if price_element else "N/A"

第 5 步:存成 CSV 或 Excel

最直接的做法是寫成 CSV:

import csv

data = [title, price, rating]
with open('book_data.csv', 'w', newline='', encoding='utf-8') as f:
    writer = csv.writer(f)
    writer.writerow(["Title", "Price", "Rating"])
    writer.writerow(data)

資料量再大一點、之後還要做分析,改用 pandas 會順手很多:

import pandas as pd

df = pd.DataFrame([{"Title": title, "Price": price, "Rating": rating}])
df.to_csv('book_data.csv', index=False)

book_data.csv 用 Excel 或 Google Sheets 打開,資料就能直接進到你的分析流程。

這些資料實際能換到什麼

以下幾種用法的投資報酬最容易被看見:

  • 電商價格監控:零售商每天抓一輪競品價格,據此調整自家定價 (scrapingdog.com)。
  • 潛在客戶開發:業務團隊從名錄或 Google Maps 蒐集名單,省下數千美元的資料供應商費用 (scrapingdog.com)。
  • 競爭情報:產品團隊盯著競品官網的功能更新與價格調整。
  • 職缺市場分析:HR 從求職網站觀察招募趨勢與薪資水準 (scrapfly.io)。
  • 房地產研究:投資人從 Zillow 或 Craigslist 擷取物件列表,比對區域價格走勢。

判斷標準很單純:只要一份資料有價值、又沒有匯出功能,爬取就是最省事的補位方式。

怎麼降低被封鎖的機率

網站對機器人的容忍度差異很大,下面幾個習慣可以明顯減少被擋下來的次數:

  • 控制請求頻率:每次請求之間加上 time.sleep(1),節奏接近真人瀏覽。
  • 輪換代理伺服器:用代理池分散來源 IP 位址 (scrapingbee.com)。
  • 帶上合理的 User-Agent:讓伺服器看到的是一般瀏覽器:
    headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/118.0.0.1 Safari/537.36"}
    requests.get(url, headers=headers)
    
  • 尊重 robots.txt:動手前先確認網站開放哪些路徑。
  • 管理 Cookie 與標頭:用 requests.Session() 保留 Cookie,必要時補上 RefererAccept-Language 等標頭。
  • 避開蜜罐陷阱:頁面上看不見卻存在的欄位與連結,多半就是專門用來辨識機器人的。

更完整的做法可以參考 Octoparse 的防封鎖指南

Thunderbit:不用寫程式的另一條路

使用 AI 從任何網站抓取資料 Get Started Free

有些情況你要的只是那份資料,不想為了它安裝環境、除錯 selector、再處理網站改版。Thunderbit 的定位就在這一段。

它是一款給商務使用者設計的 AI 網頁爬蟲 Chrome 擴充功能,流程壓縮成這樣:

  • AI 建議欄位:Thunderbit 會先掃過頁面,直接建議可擷取的欄位(像是「產品名稱」、「價格」、「評分」),不必自己讀 HTML 或寫 selector。
  • 兩步完成爬取:先點「AI 建議欄位」,再點「爬取」,資料就會整理成表格。
  • 支援子頁面與分頁:需要進到詳細頁補資料、或跨多頁擷取時,AI 會自動跟著連結與「下一頁」按鈕,最後合併成一份資料集。
  • 立即匯出:資料可直接送到 Excel、Google Sheets、Airtable 或 Notion,省掉 CSV 編碼與格式的麻煩。
  • 免維護:網站版面調整時 AI 會自行適應,不用回頭修壞掉的程式。
  • 不需要寫程式:會用瀏覽器就會用。

想看更詳細的操作,可以參考 Thunderbit 的新手網頁爬取教學

免費試用 Thunderbit Chrome 擴充功能

Python 與 Thunderbit 怎麼選

兩者的差別,攤開來看最清楚:

比較項目Python 網頁爬取Thunderbit
安裝設定安裝 Python、學會寫程式、除錯 HTML安裝 Chrome 擴充功能,點一下就開始
學習門檻中等(需了解 Python 與 HTML 基礎)很低(介面操作,AI 直接建議欄位)
彈性幾乎無上限(可自訂邏輯、適用任何網站)適合多數常見網站;特殊情境會受限
維護成本網站改版時需自行修正程式AI 會適應變動,使用者維護需求很低
擴充性需要額外投入資源(執行緒、代理、伺服器)雲端爬取(一次 50 頁),擴充很容易
成本免費(但需付出時間與代理成本)有免費方案,之後按使用量付費
最適合對象開發者、自訂專案、系統整合商務使用者、業務/營運、快速蒐集資料

這些情況選 Python:

  • 你需要完全掌控流程、要寫自訂邏輯,或要跟其他軟體整合。
  • 目標網站結構複雜或特殊。
  • 你不排斥寫程式,也願意長期維護腳本。

這些情況選 Thunderbit:

  • 你要的是速度,不想為了一次任務去做環境設定。
  • 你是商務使用者,做業務、營運或行銷,沒有技術背景。
  • 需求集中在清單、表格這類常見結構。
  • 你不想把時間花在修腳本上。

不少團隊其實兩邊都用:臨時需求交給 Thunderbit,深度整合或客製化流程再回到 Python。

立即用 Thunderbit 抓取網頁資料

重點整理

探索更多網頁爬取指南 Get Started Free

不論是追價格、建名單,還是把重複的研究流程自動化,Python 網頁爬取的骨架都只有四步:

  1. 使用 Requests 抓取頁面。
  2. 用 BeautifulSoup 解析 HTML。
  3. 擷取並清理資料。
  4. 存成 CSV 或 Excel。

但這四步不見得非得自己走完。Thunderbit 這類工具讓完全不碰技術的同事,也能在幾次點擊內從幾乎任何網站取得資料,把「要是有這份資料就好了」到「資料已經在試算表裡」的距離壓到最短。

可以先做的三件事:

資料乾淨、結構清楚、隨時可用,這三件事做到了,後面的分析才有意義。

免費試用 AI 網頁爬蟲 Get Started Free

常見問題

1. 用 Python 做網頁爬取合法嗎?
在規範內操作是合法的。動手前確認網站的服務條款與 robots.txt,並避開私人或敏感資料。

2. 新手最簡單的入門方式是什麼?
從 Python 的 Requests 和 BeautifulSoup 開始,挑一個結構單純的公開網站練手。完全不想寫程式的話,可以直接試 Thunderbit

3. 怎麼避免爬取時被封鎖?
降低請求頻率、使用代理、輪換 User-Agent,並尊重 robots.txt。更多做法可參考 ScrapingBee 的指南

4. Thunderbit 能處理動態網站或子頁面嗎?
可以。它的 AI 能跟隨連結、處理分頁,也能從子頁面或圖片中擷取資料。

5. 我的專案該選 Python 還是 Thunderbit?
會寫程式、又需要自訂邏輯,Python 比較合適;追求速度、簡單、少設定,Thunderbit 的效率更高。

6. 可以請 AI 程式代理幫我寫 Python 爬蟲嗎?
可以,而且這條路和本文最初撰寫時相比已經差很多。Claude Code、OpenAI Codex 這類 AI 程式代理,能依照自然語言描述(例如「把這個 URL 裡的書名、價格和星等評分抓下來,存成 CSV」)產生可執行的 requests + BeautifulSoup 程式。若目標網站大量依賴 JavaScript 或需要登入,Browser Use 這個開源函式庫可讓 AI 代理用自然語言操作真實瀏覽器;Firecrawl 則提供爬取 API 與 MCP 伺服器,方便接進代理工作流程。要注意的是,反機器人防護、robots.txt 與速率限制不會因此消失,AI 產生的程式一樣要遵守;它降低的是「我還不會 Python」這道門檻。

兩條路都試一輪,再決定哪一種比較貼近你的工作節奏。

Shuai Guan
Shuai Guan
Thunderbit 執行長|AI 資料自動化專家 Shuai Guan 是 Thunderbit 的執行長,畢業於密西根大學工程學院。憑藉近十年在科技與 SaaS 架構領域的經驗,他專注於把複雜的 AI 模型轉化為實用、免程式碼的資料擷取工具。在這個部落格中,他分享經過實戰驗證、毫無保留的網頁爬取與自動化策略見解,幫助你打造更聰明、以數據驅動的工作流程。當他不在優化資料流程時,也會把同樣的細膩與專注投入到攝影興趣中。
Topics
Python網頁

試試 Thunderbit

只要 2 下點擊,就能抓取名單與其他資料。由 AI 驅動。

取得 Thunderbit 完全免費
用 AI 擷取資料
輕鬆將資料轉移到 Google Sheets、Airtable 或 Notion
Chrome Store Rating
PRODUCT HUNT#1 Product of the Week