Skip to content

midtern

Rshark edited this page Jun 10, 2022 · 4 revisions

期中作業:請繳交一份《程式專案+報告》


主題 : 證交所股票資訊爬蟲以及資料視覺化呈現方法研究+優化

  • 模組導入
import requests //網頁擷取
import pandas as pd //資料分析
import xlwings as xw //Excel表格處理,資訊視覺化
from bs4 import BeautifulSoup //自動解析原始碼並產生BeautifulSoup物件,用以尋找目標資料
  • 經使用者提供日期,再從證交所網站抓取當日交易資訊加以整理
day = input("請輸入日期 例如:20220609 不可輸入未來日期與非工作日") //輸入至day變數中的日期將被導入至下方url提前預備的空缺中
url = 'https://www.twse.com.tw/exchangeReport/MI_INDEX?response=csv&date='+day+'&type=ALL'
res = requests.get(url) //對使用者提供的網頁連結送出抓取資料的請求
data = res.text //將取得的資料存在data變數中
data.split('\n')
for da in data.split('\n'):
    if len(da.split('","')) == 16 and da.split('","')[0][0] != '=': //先以len()函數取出長度為16的資料,再指定每列資料第一元素的第一符號不為=的資料
        print(da.split('","')) //將此階段的資料呈現在IDE上以供確認,使用上可以略過這一part
  • 經過上一步驟後,在IDE上呈現出的資料
  • 資料清洗
cleaned_data = []
for da in data.split('\n'):
    if len(da.split('","')) == 16 and da.split('","')[0][0] != '=':
        cleaned_data.append([ele.replace('",\r','').replace('"','') 
                            for ele in da.split('","')]) //將資料中不需要的元素去除(e.g., ,\r),並使用append()函數把乾淨資料加到空list cleaned_data中
  • 輸出表格至excel並呈現
df = pd.DataFrame(cleaned_data, columns = cleaned_data[0])
df = df.set_index('證券代號')[1:]
xw.view(df)
  • 資訊視覺化最終呈現

參考資料出處 :