接著進入課程中的精華部分,運用 Python 進行爬蟲抓取台灣證券交易所的資料。模擬瀏覽器的行為抓取資料,再將資料依照格式和規格進行處理後,存成關聯式資料庫(SQL)。
課程名稱
用 Python 理財:打造小資族選股策略:https://bit.ly/2KXR1Nw
對於初學者而言,算是簡易的入門教材。由於 Python 本身的語言特性,相較於 JavaScript 是比較人性化的。外加上已內建不少好用的函式庫,對於資料分析的處理上,用 Python 入門算是滿不錯的。
課程相關文章
指令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
import requests import pandas as pd import sqlite3 from io import StringIO # 將資料存入系統內部記憶體(內存) response = requests.get( 'https://www.twse.com.tw/exchangeReport/MI_INDEX?response=csv&date=20190816&type=ALLBUT0999&_=1565954564305') # 切割所需要的部份 lines = response.text.split('\n') newlines = [] for line in lines: if len(line.split('",')) == 17: newlines.append(line) # 合併成字串,並對 dataFrame 做處理 df = pd.read_csv(StringIO("\n".join(newlines).replace('=', ''))) df = df.astype(str) # 轉換成字串 df = df.apply(lambda s: s.str.replace(',', '')) # 匿名函式 df = df.set_index('證券代號') df = df.apply(lambda s: pd.to_numeric( s, errors='coerce')) # 轉換成數字,若無法轉換則回傳 NaN df = df[df.columns[df.isnull().sum() != len(df)]] # 刪除掉不要的表格 """ print(df) """ # 取出收盤價比開盤價>5%的股票 """ print(df[df['收盤價']/df['開盤價'] > 1.05]) """ # 存成 csv 檔,前面為相對路徑,後為編碼格式 """ df.to_csv('./python_learn/daily_price.csv', encoding='utf_8_sig') """ # 讀取 csv 檔 df = pd.read_csv('./python_learn/daily_price.csv', index_col=['證券代號']) df = df.loc[~df['收盤價'].isnull()] # 過濾掉 NaN 值 """ print(df) """ # 存到 sqlite3 中 conn = sqlite3.connect('./python_learn/test.sqlite3') df.to_sql('daily_price', conn, if_exists='replace') df = pd.read_sql('select * from daily_price', conn, index_col=['證券代號']) print(df) |
按讚加入粉絲團