爬蟲第六步:用 Python 爬蟲整理上市股票清單

立即訂閱電子報,掌握最新資訊!

    電子郵件

    有興趣的主題
    量化交易金融知識台灣股市國內期貨海外期貨虛擬貨幣

    有興趣的量化交易軟體/平台
    不清楚MultiChartsTradingViewPythonXQMT4MT5

    還有什麼詢問的?

    好富投 1920x400
    好富投 978x258

    點我了解更多資訊


    用 Python 自動化股票投資

    我們在很多時候會需要用到整個上市股票和產業分類的資料表,來協助做自動化股票投資。例如,在開發選股模型時,有產業分類的資料能夠讓我們更精確地選出股票。

    這個資料要去哪裡抓呢?其實證交所就有提供這個資料表了!我們只要透過爬蟲定期更新,就不會錯過新上市股票的產業分類資訊了!

    資料表位於網頁何處?

    首先,在證交所首頁上方列點擊「產品與服務」,並選擇「證券編碼公告」。如下方截圖。

    用 Python 爬蟲整理上市股票清單
    用 Python 爬蟲整理上市股票清單

    再來,點擊「本國上市證券國際證券辨識號碼一覽表」右方的連結。如下圖。

    用 Python 爬蟲整理上市股票清單

    於是,我們就能看到我們想要的那份資料表了。如下圖所示。

    網址為:https://isin.twse.com.tw/isin/C_public.jsp?strMode=2。先記起來,在後續的爬蟲會用上。

    用 Python 爬蟲整理上市股票清單

    Py 101209161710
    Py 101209161711

    爬蟲實作-上市股票清單

    現在,我們知道網址了,就用最經典的 requests 和 BeautifulSoup 套件完成這項爬蟲任務吧!

    首先,我們先 import 這兩個套件:

    import requests 
    from bs4 import BeautifulSoup

    再來,我們透過 requests 套件的 get 方法來訪問這個頁面,把回傳結果存進 res。

    url = "https://isin.twse.com.tw/isin/C_public.jsp?strMode=2" 
    res = requests.get(url)

    緊接著,我們使用 BeautifulSoup 來解析這個回傳內容。我們會發現這個表格即是由典型的 tr 和 td 所構成:每一個 tr 標籤中的內容為一行資訊,每一個 td 標籤中的內容為該行中每一格所包含的資訊。因此,我們先依據 tr 做 findAll,這樣後續在根據 tr 做 for 迴圈時,即是一行一行把資料取出來的意思。

    而在下方程式碼中,我們把 tr 每一行取出來的資料,再用 td 去解析,就可以得到,並且使用 get_text() 把每一個 td 標籤中的值取出來,就能萃取出該行包含每一個值的 list 了,也就是程式碼中的 data。

    但是從上面的截圖,我們可以知道,蘊含有用資訊的 data 必須要有 7 個值。因此,我們加上一個資料長度的判定,過濾掉無用資訊。

    soup = BeautifulSoup(res.text, "lxml") 
    tr = soup.findAll('tr')
    
    tds = []
    for raw in tr:
         data = [td.get_text() for td in raw.findAll("td")]
         if len(data) == 7:
             tds.append(data)

    如此一來,這個表格就完整地存下來了!我們可以試著用 pd.DataFrame 印出來看看。

    import pandas as pd 
    pd.DataFrame(tds[1:],columns=tds[0])
    用 Python 爬蟲整理上市股票清單

    看來,不僅是上市股票,連權證代碼都一起爬下來了。進一步的整理,以及把證券代碼從「有價證券代碼及名稱」列解析出來,就靠聰明的讀者自行練習囉!

    至於如何應用產業分類資料在選股模型上,有興趣的同學可以參考一下 Python 選股模型課程,有完整的解說!

      電子郵件

      有興趣的主題
      量化交易金融知識台灣股市國內期貨海外期貨虛擬貨幣

      有興趣的量化交易軟體/平台
      不清楚MultiChartsTradingViewPythonXQMT4MT5

      還有什麼詢問的?


      量化通粉絲社群,一起討論程式交易!

      加入LINE社群量化交易討論群」無壓力討論與分享!

      加入臉書社團「程式交易 Taiwan」即時獲取實用的資源!

      QP66
      QP66

      具備逾十年交易經驗,研究交易資產橫跨股票、債券、外匯、原物料,以及加密貨幣。現為量化避險基金交易員,亦曾任職於資金規模逾百億的避險基金,以及在區塊鏈企業擔任顧問一職。

      擅長從宏觀至微觀,由淺入深挖掘交易機會,並運用Python實現全自動化的投資組合管理。

      文章: 24

      發佈留言

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