昨天完成了環境設定,那今天我們要來了解台灣證交所 (TWSE) 提供的公開 API。TWSE 官網雖然沒有寫「API 文件」,但實際上很多股市資料都能用 URL 直接取得,格式包含 JSON 與 CSV。
在寫爬蟲或資料分析之前,先搞清楚 API 回傳的格式非常重要。
舉例來說,如果要抓取 每日收盤行情(stock_day),URL 會長這樣:
https://www.twse.com.tw/exchangeReport/STOCK_DAY?response=json&date=20240901&stockNo=2330
拆解一下:
如果想要 CSV 格式,只要把 response=json 改成 response=csv 即可:
https://www.twse.com.tw/exchangeReport/STOCK_DAY?response=csv&date=20240901&stockNo=2330
{
"stat": "OK",
"date": "20240901",
"title": "臺灣積體電路製造股份有限公司 各日成交資訊",
"fields": ["日期", "成交股數", "成交金額", "開盤價", "最高價", "最低價", "收盤價", "漲跌價差", "成交筆數"],
"data": [
["113/09/02","35,000,000","21,000,000,000","570.0","575.0","568.0","572.0","+2.0","15,000"],
["113/09/03","38,000,000","22,000,000,000","575.0","582.0","572.0","580.0","+8.0","18,000"]
]
}
"日期","成交股數","成交金額","開盤價","最高價","最低價","收盤價","漲跌價差","成交筆數"
"113/09/02","35,000,000","21,000,000,000","570.0","575.0","568.0","572.0","+2.0","15,000"
"113/09/03","38,000,000","22,000,000,000","575.0","582.0","572.0","580.0","+8.0","18,000"
import requests
url = "https://www.twse.com.tw/exchangeReport/STOCK_DAY?response=json&date=20240901&stockNo=2330"
res = requests.get(url)
data = res.json()
print(data["title"]) # 臺灣積體電路製造股份有限公司 各日成交資訊
print(data["fields"]) # 欄位名稱
print(data["data"][0]) # 第一筆資料
import pandas as pd
url = "https://www.twse.com.tw/exchangeReport/STOCK_DAY?response=csv&date=20240901&stockNo=2330"
df = pd.read_csv(url)
print(df.head())
那今天就先這樣。