在這篇教學中,我們將使用:
requests➜ 發送網頁請求BeautifulSoup➜ 解析 HTML
📦 安裝套件
pip install requests beautifulsoup4🌐 設定目標網址
url = "https://www.twse.com.tw/exchangeReport/STOCK_DAY?response=html&stockNo=2330"
👉 這是台灣證交所提供的資料頁面
📥 發送請求並解析網頁
import requestsfrom bs4 import BeautifulSoupresponse = requests.get(url)soup = BeautifulSoup(response.text, 'html.parser')
🔍 找到表格資料
table = soup.select("table")rows = table[0].select("tr")
👉 取得整個股價表格
📊 取得最新收盤價
latest_row = rows[-1]columns = latest_row.select("td")closing_price = columns[6].text.strip()print(f"最新交易日收盤價:{closing_price}")
📌 說明:
rows[-1]➜ 最後一筆(最新資料)columns[6]➜ 收盤價欄位
⚠️ 常見問題(很重要)
1️⃣ TWSE 有時會擋 request
👉 建議加上 header:
headers = { "User-Agent": "Mozilla/5.0"}response = requests.get(url, headers=headers)
2️⃣ 網頁可能沒有資料
👉 建議檢查:
if not table: print("抓不到資料")
3️⃣ HTML 結構可能變動
👉 如果抓不到資料,通常是:
- 表格結構改了
- CSS selector 要調整
🧾 完整範例(推薦版本)
import requestsfrom bs4 import BeautifulSoupurl = "https://www.twse.com.tw/exchangeReport/STOCK_DAY?response=html&stockNo=2330"headers = { "User-Agent": "Mozilla/5.0"}response = requests.get(url, headers=headers)soup = BeautifulSoup(response.text, 'html.parser')table = soup.select("table")if table: rows = table[0].select("tr") if len(rows) > 1: latest_row = rows[-1] columns = latest_row.select("td") if len(columns) > 6: closing_price = columns[6].text.strip() print(f"最新交易日收盤價:{closing_price}") else: print("資料格式異常") else: print("沒有資料")else: print("找不到表格")
🎯 小結
透過這個範例,你已經學會:
✔ 使用 requests 抓取網頁
✔ 使用 BeautifulSoup 解析 HTML ✔ 抓取表格資料 ✔ 取得指定欄位數據






















