收集台股資料 1.2 - 找台股代號

來源二:證交所網站

用 Pandas 將 HTML 網頁表格轉為 DataFrame

再取第一欄有價證券代號及名稱並只留下代碼(會留下一些下方表頭文字)

為方便之後使用我將 Dataframe Pickle 起來

未上市上櫃公開發行 strMode=1
上市 strMode=2
上市上櫃債券 strMode=3
上櫃 strMode=4
興櫃 strMode=5
期貨及選擇權 strMode=6
開放式證券投資信託基金 strMode=7
未公開發行之創櫃板證券 strMode=8
買賣黃金現貨 strMode=9
外幣計價可轉換定期存單 strMode=10 (空白)
import os
import pandas as pd

if os.path.exists(html):
    df = pd.read_html("http://isin.twse.com.tw/isin/C_public.jsp?strMode=4")
	# 可將 strMode=4 的數字換成別的
    df = pd.DataFrame(df[0])
    df_ = pd.DataFrame(columns=df.ix[0])
    for i in range(2,len(df)):
        df_ = df_.append({'有價證券代號及名稱' : df.ix[i][0]},ignore_index=True)
    c = df_['有價證券代號及名稱']
    n = pd.DataFrame({'Code' : []})
    for i in c:
        a = i.split()
        n = n.append({'Code' : [a[0]]},ignore_index=True)    
    print(n)
    n.to_pickle('Data/codelist_4.pkl')

Print 結果

               Code
0          [70001X]
1          [70001Y]
2          [70005X]
3          [707755]
4          [723985]
5          [724732]
6          [724740]
7          [724775]
8          [724837]
9          [724846]
10         [724887]
11         [724937]
12         [725226]
13         [725229]
14         [725251]
15         [725266]
16         [725288]
17         [725353]
18         [725358]
19         [725398]
20         [725413]
21         [725459]
22         [725462]
23         [725466]
24         [725478]
25         [725531]
26         [725554]
27         [725563]
28         [725568]
29         [725570]
...             ...
4628         [8932]
4629         [8933]
4630         [8934]
4631         [8935]
4632         [8936]
4633         [8937]
4634         [8938]
4635         [8941]
4636         [8942]
4637         [9949]
4638         [9950]
4639         [9951]
4640         [9960]
4641         [9962]
4642       [臺灣存託憑證]
4643       [911613]
4644  [受益證券-資產基礎證券]
4645       [01014S]
4646       [01015S]
4647       [01016S]
4648       [01017S]
4649       [01101S]
4650       [01102S]
4651       [01103S]
4652       [01104S]
4653       [01106S]
4654       [01107S]
4655       [01108S]
4656       [01109S]
4657       [01110S]

[4658 rows x 1 columns]