在前幾天的練習中,我們已經學會如何抓取單一月份的股票資料,也能用 twstock 或直接處理 JSON / CSV 來取得台積電 (2330) 的資訊。不過,股市分析往往需要觀察更長的時間區間,例如半年、一年甚至更久。今天來利用迴圈來自動組合 URL / 指定年月,一次抓取多個月份的資料,避免每次都要手動輸入年月。
股票資料的 API 或套件大多支援「指定某年某月」的查詢方式。因此如果我們想要抓取連續好幾個月的資料,就需要:
這樣就能一次取回完整的區間資料。
以下程式示範如何抓取最近 6 個月的台積電 (2330) 股價資料:
import datetime
import twstock
# 建立股票物件
stock = twstock.Stock('2330')
# 設定要抓取的月份數
MONTHS_TO_FETCH = 6
# 計算起始的年份和月份
today = datetime.date.today()
start_year = today.year
start_month = today.month - (MONTHS_TO_FETCH - 1)
# 如果月份 <= 0,代表跨年,要調整成正確的年份與月份
while start_month <= 0:
start_month += 12
start_year -= 1
print(f"正在從 {start_year}/{start_month} 抓取最近 {MONTHS_TO_FETCH} 個月的台積電(2330)股價資料...")
# 抓取資料(從起始年月到今天)
stock.fetch_from(start_year, start_month)
# 檢查資料長度
print(f"成功取得 {len(stock.date)} 筆資料")
print("前 5 筆資料:")
for i in range(5):
print(stock.date[i], stock.open[i], stock.close[i], stock.capacity[i])
假設今天是 2025/09/##,設定 MONTHS_TO_FETCH = 6,程式會印出:
正在從 2025/4 抓取最近 6 個月的台積電(2330)股價資料...
成功取得 125 筆資料
前 5 筆資料:
2025-04-01 825 832 30215453
2025-04-02 830 828 26518493
2025-04-03 828 820 23128712
2025-04-07 822 826 27452187
2025-04-08 826 832 31875491
(數字僅為示意,實際結果依當日資料為準。)
今天我們學會了如何用 迴圈+日期計算,一次抓取多個月份的資料。這個技巧讓我們不用手動輸入年月,程式會自動處理跨年問題並組合完整的時間區間。未來我們就能更方便地進行長期股價趨勢分析,像是計算半年平均價、觀察成交量變化,甚至搭配 matplotlib 畫圖。
那今天就先這樣。