Python 爬取每日股價(2)

上篇文章Python 爬取每日股價(1)學會了找到所需資料和爬取的方法。 接下來資料要儲存成xlsx格式。 台灣證券交易所 先安裝pandas和xlsxwriter pip install pandas pip install xlsxwriter 如果是colab,使用!pip install xlsxwriter 藉由上篇找到的資料位置"data9",以及觀察到資料是根據每天做儲存。 因此我們使用基於每天的資料處理方式,把所需要的股票資料、開盤價、收盤價等等存放。 import requests import pandas as pd from pprint import pprint as pprint date = "20210827" url = f"https://www.twse.com.tw/exchangeReport/MI_INDEX?response=json&date={date}&type=ALLBUT0999&_=1630244648174" res = requests.get(url) data = res.json() data_list = data["data9"] columns = data["fields9"] df = pd.DataFrame(data_list, columns=columns) writer = pd.ExcelWriter('twse_data.xlsx', engine='xlsxwriter') df.to_excel(writer, sheet_name=date, index=False) writer.save() # pprint(data_list) f-strings in Python PEP 498 打開儲存的"twse_data.xlsx" 每日收盤行情 我們可以依靠改變日期獲得過去的資料, 存成不同分頁或是檔案。 也可以依據未來需要的使用資料方式來改變儲存格式。

2021-09-06 · 1 min · 70 words · KbWen

Python 爬取每日股價(1)

如何取得每日的股價資訊 進入證交所每日收盤行情,選擇全部(不含…),可以看到有許多選項可點。 找到每日收盤行情 110.08.27每日收盤行情 點擊F12進入開發者環境,再點選Network,觀察我們要的數據資訊 Python及時股價 點選XHR找到傳送數據的Requests import requests url = "https://www.twse.com.tw/exchangeReport/MI_INDEX?response=json&date=20210827&type=ALLBUT0999&_=1630244648174" res = requests.get(url) res.json() 得到Json,並在data9找到全部的股票數據 {'alignsStyle1': [['center', 'center', 'center', 'center', 'center', 'center'], ... ... 'data9': [['0050', '元大台灣50', '16,875,047', '9,673', '2,328,482,421', '136.70', '138.50', '136.45', '138.15', '<p style= color:red>+</p>', '1.15', '138.15', '4', '138.20', '103', '0.00'], ['0051', '元大中型100', '17,810', '63', '1,003,448', '56.20', '56.60', '56.20', '56.60', '<p style= color:red>+</p>', '0.35', '56.55', '1', '56.60', '9', '0.00'], ... ... 'subtitle9': '110年08月27日每日收盤行情(全部(不含權證、牛熊證))'} 幾個重要的數據 ['0050', #股票代號 '元大台灣50', '16,875,047', #成交股數 '9,673', '2,328,482,421', '136.70', #開盤價 '138.50', #最高價 '136.45', #最低價 '138.15', #收盤價 '<p style= color:red>+</p>', '1.15', '138.15', '4', '138.20', '103', '0.00'], 輕鬆完成,在爬取過程中還是非常簡單的, ...

2021-08-29 · 1 min · 96 words · KbWen

python 爬取及時股價

如何取得即時的股價資訊 進入證交所提供的基本市況報導網站,右上方輸入股票代號,以2330為例。 看到當日的最高、最低、成交價量和最佳五檔等等。 此時在網頁上右鍵點選Inspect打開DevTools切換到Network欄位並觀察 爬蟲頁面 發現會一直get某個網址,名稱開頭是getStockInfo,應該就是我們要的資訊了。 import requests url = "https://mis.twse.com.tw/stock/api/getStockInfo.jsp?ex_ch=tse_2330.tw" res = requests.get(url) res.json() 得到一個排列整齊的json {'queryTime': {'stockInfoItem': 4329, 'sessionKey': 'tse_2330.tw_20200908|', 'sessionStr': 'UserSession', 'sysDate': '20200908', 'sessionFromTime': -1, 'stockInfo': 2084673, 'showChart': False, 'sessionLatestTime': -1, 'sysTime': '12:05:35'}, 'referer': '', 'rtmessage': 'OK', 'exKey': 'if_tse_2330.tw_zh-tw.null', 'msgArray': [{'n': '台積電', 'g': '281_174_260_166_385_', 'u': '468.5000', 'mt': '060262', 'o': '428.0000', 'ps': '593', 'tk0': '2330.tw_tse_20200908_B_9998775018', 'a': '430.5000_431.0000_431.5000_432.0000_432.5000_', 'tlong': '1599537930000', 't': '12:05:30', 'it': '12', 'ch': '2330.tw', 'b': '430.0000_429.5000_429.0000_428.5000_428.0000_', 'f': '143_239_162_400_391_', 'w': '383.5000', 'pz': '428.0000', 'l': '427.5000', 'c': '2330', 'v': '16843', 'd': '20200908', 'tv': '-', 'tk1': '2330.tw_tse_20200908_B_9998774678', 'ts': '0', 'nf': '台灣積體電路製造股份有限公司', 'y': '426.0000', 'p': '0', 'i': '24', 'ip': '0', 'z': '-', 's': '-', 'h': '433.0000', 'ex': 'tse'}], 'userDelay': 5000, 'rtcode': '0000', 'cachedAlive': 7891} 在爬取網址時,不要亂刪後面的query parameters,除非你確認過差別是甚麼。 如果不能爬,Request Headers就是你要注意的地方。 理解和實驗精神 比較一下哪個是我們要的資訊。 u: 漲停 v: 跌停 z: 當盤成交價,有時候會沒有 s: 當盤成交量,有時候也會沒有;整理數據時可以根據z和s的有無來過濾。 a: 賣出最佳五檔價 f: 賣出最佳五檔量 l: 當日最低 h: 當日最高 ….. 其他參數可以再自行看看,如果今天你想專注於某支股票的狀態;例如盤中是否有大量,那麼只需重複get url取得json做判斷;若想要得到更多支當下股票資訊以及儲存就需要用到dataframe。下面給個盤中抓取多隻股價的方式。 ...

2020-09-08 · 2 min · 303 words · KbWen