爬取台灣上市上櫃公司股票代碼

今天要小編要介紹給大家如何用python爬取現在台灣上市上櫃的股票代碼,只要簡簡單單的寫幾行程式,網路上的資料就被爬下來了。今天要爬的網路資料如下圖所示,這是網站位置:http://isin.twse.com.tw/isin/C_public.jsp?strMode=2

爬取結果

寫完整個程式小編才知道原來台灣的上市股票總共有916檔阿!!

關鍵代碼:pd.read_html(url)

爬取網頁前需要先安裝python 的pandas套件,pandas是專門做資料處理的,簡單的來說就是表格的處理包,可以想像成程式化的excel,excel可以處理的pandas都能處理,甚至功能更多更強,例如小編要介紹函式read_html,只要給予網站網址就能抓取所有的表格下來,是個非常方便的功能。底下附上完整代碼,header的功能是為了模仿網頁瀏覽器,因為有些網站會擋爬蟲程式碼,因此要偽裝成chrome瀏覽器才能順利爬取資料。
pd.read_html 官網源碼

解決亂碼問題:

小編第一次爬的時候發現爬出來的資料都是亂碼,這時候就必須檢查網頁的原始編碼的形式,結果發現是MS950

print (html_text.encoding) MS950 

加入31行程式,就能使編碼回復成Big5形式囉~

print (html_text.encoding) Big5 

正常資料:

完整程式碼:

處理字串

接下來要處理字串的問題,表格裡的字串包含股票代號以及股票名稱,因此需要把代號特別分隔出來,這裡利用的是regular expression,小編只要有想分隔出的字串都會到下面這個網站測試
regular101:測試regular expression的好網站

上面的表格填寫格式,下面的表格填寫測試,就可以知道抓到什麼字了,被選取到的字會顯示成藍色的,如下圖所示:

再來只要將 regular expression結合進程式碼中就可以單獨取股票代碼出來了
完整程式碼:

 

使用

使用方式非常簡單,由於表格中包含眾多資料,但我們只需要取得特定的列數即可,其他的都是不需要的資料,因此從表格的第2列開始抓取股票代碼出來,一直到918列結束

完整程式碼如下,小編把爬取上市上櫃的代碼都整合在一起了,只要執行以下程式碼就可以輕輕鬆鬆地把台灣上市上櫃的所有股票代號全部抓取下來了~~

arrow
arrow
    創作者介紹
    創作者 Darwin的AI天地 的頭像
    Darwin的AI天地

    我的小小AI 天地

    Darwin的AI天地 發表在 痞客邦 留言(3) 人氣()