import requests import json
def get_stock_info(stock_id='2330'): # 目標 URL,結合指定股票代號 url = f'https://mis.twse.com.tw/stock/api/getStockInfo.jsp?ex_ch=tse_{stock_id}.tw' # 取得網頁資料 response = requests.get(url) # 確認是否成功連線(HTTP status code) if response.status_code == 200: # 將回傳內容轉為 JSON data = response.json() # 簡單檢查結構 # data 的結構示例: # { # "msgArray":[{ ... }], # "referer":"", # "userDelay":5000, # "rtcode":"0000", # "queryTime":{ ... }, # "rtmessage":"OK", # "exKey":"if_tse_2330.tw_zh-tw.null", # "cachedAlive":2265 # } # 取得 msgArray,通常只有一筆資料 (index=0) msg_array = data.get('msgArray', []) if len(msg_array) > 0: stock_data = msg_array[0] # 以下為示範如何拿出常見的欄位,依需求自行擴充 stock_name = stock_data.get('n', '') # 公司簡稱,如「台積電」 full_name = stock_data.get('nf', '') # 公司全名,如「台灣積體電路製造股份有限公司」 current_price = stock_data.get('z', '') # 當前成交價 open_price = stock_data.get('o', '') # 開盤價 high_price = stock_data.get('h', '') # 最高價 low_price = stock_data.get('l', '') # 最低價 bid_price = stock_data.get('b', '') # 五檔買價(以 '_' 隔開) ask_price = stock_data.get('a', '') # 五檔賣價(以 '_' 隔開) volume = stock_data.get('v', '') # 累積成交量 date = stock_data.get('d', '') # 日期(格式:YYYYMMDD) time = stock_data.get('t', '') # 時間(格式:hh:mm:ss) # 印出結果 print(f"股票代號: {stock_id}") print(f"公司簡稱: {stock_name}") print(f"公司全名: {full_name}") print(f"日期: {date}") print(f"時間: {time}") print(f"開盤價: {open_price}") print(f"最高價: {high_price}") print(f"最低價: {low_price}") print(f"當前成交價: {current_price}") print(f"累積成交量: {volume}") print(f"五檔買價 (以 '_' 隔開): {bid_price}") print(f"五檔賣價 (以 '_' 隔開): {ask_price}") else: print("msgArray 內無資料,請確認 API 回傳格式。") else: print(f"無法取得資料,HTTP 狀態碼:{response.status_code}")
# 呼叫函式測試 if __name__ == '__main__': get_stock_info('2330') # 以台積電 2330 為例
|