Python - Download Taiwan Stock Data With TWSE Open API

Python – 透過證交所開放資料API抓取台股當日交易資訊

目錄

    原始文章

    Python – 透過證交所開放資料API抓取台股當日交易資訊


    個股日成交資訊

    證交所在政府開放資料平台上提供了一個資料集個股日成交資訊這裡面的資料會每日更新,並且只保留最新的資料。如果你想抓歷史股價資料,可以參考另一篇文章〈使用Python及Yahoo Finance API抓取台股歷史資料〉

    資料格式

    在這個資料集中,雖然它標示的檔案格式是csv,但我用Python的request套件抓下來後,發現它的資料結構很像json。我不是很了解這兩種格式之間的轉換邏輯,總之我後來順利使用json的方式成功處理,並轉成pandas的dataframe。

    Python - 透過證交所開放資料API抓取台股當日交易資訊

    不要抓錯網址

    點擊「檢視資料」按鈕後,會跳出彈出式視窗,注意你要抓的網址是上面的「資料下載網址」,不要開心的看到下面有json格式就直接用了。下面的連結只是範例資料,你抓一百年也還是一樣的股價。

    Python - 透過證交所開放資料API抓取台股當日交易資訊 - 檢視資料

    完整程式碼

    import requests
    import pandas as pd
    
    # 透過證交所API抓取資料
    link = 'http://www.twse.com.tw/exchangeReport/STOCK_DAY_ALL?response=open_dat'
    r = requests.get(link)
    data = pd.DataFrame(r.json()['data'])
    
    # 修改欄位名稱
    data.columns = ['SECURITY_CODE', 'NAME', 'VOLUME', 'AMOUNT', 'OPEN',
                   'HIGH', 'LOW', 'CLOSE', 'PRICE_CHANGE', 'TRANSACTION']

    台股歷史股價與趨勢預測

    〈台股歷史股價與趨勢預測〉就是從Yahoo Finance抓取歷史資料,並透過證交所API每日更新。實際佈署方式是使用PythonAnyWhere和Plotly,可以參考〈在網頁上發佈動態資料圖表 – 方案評估與技術問題全記錄〉



    推薦文章

    A
    Aron

    工業設計系畢業,曾任職知名品牌行銷企劃,做點設計,寫文案也寫網站;目前擔任零售業數據分析師。最近開始練格鬥和Python量化投資。

    Content Protection by DMCA.com
    Python 開放資料 Codebase

    4 則留言

    1. King

      https://bsr.twse.com.tw/bshtm/
      請問這個分點資訊,您有找到不用驗證碼的API可以下載嗎?

      1. Aron

        我沒有找到其他類似的資料源,但如果你是用Python的話,可以試試看用OpenCV的方式辨識驗證碼的文字,但就有會有一些技術工作要做,搜尋python recognize captcha之類的關鍵字應該就會有了。以下是我找到的兩篇內容,讓你參考。

        Decoding captchas using Python
        Bypass Captcha using 10 lines of code with Python, OpenCV & Tesseract OCR engine

    2. Egbert

      您好,想請問您在政府開放資料平台上抓取的個股日成交資訊是否也會有亂碼跟錯位的問題?

      1. Aron

        我抓下來是正常的,或是你可以在requests後面加上下面這一行試試看。

        r.encoding = ‘utf-8’

    發佈留言

    • * 表示必填欄位
    • 您填寫的電子郵件不會被公開
    • 請確認您的電子郵件正確無誤,當您的留言收到新的回覆時,我們會寄送通知信件給您

    發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *