網頁

2023年4月29日 星期六

用 Python 取得台股上市上櫃清單(一)

各位知道目前台股上市上櫃的公司有多少嗎?
今天用 Python 來抓取台灣證券交易所上市上櫃的公司清單。

台灣證券交易所公佈的上市證券國際證券辨識號碼一覽表網頁在:
https://isin.twse.com.tw/isin/C_public.jsp?strMode=2

 Mode=2是上市資料,Mode=4是上櫃資料,現在先用上市資料來說明。

1.首先先載入相關套件:

import requests
import pandas as pd

2. 將html 網頁資料抓下來存成 dataframe資料格式:

res = requests.get("http://isin.twse.com.tw/isin/C_public.jsp?strMode=2")
df = pd.read_html(res.text)[0]
df

3. 接著設定欄位(column)名稱:

df.columns = df.iloc[0]
df


4.  刪除第一行(Row):

df = df.iloc[2:]
df 


5. 接著要找出CFI code 是 ESVUFR 的資料,其中CFI代碼CBCIXU是不動產投資信託,CEOGEU是ETF . . .

df = df[df['CFICode'] == 'ESVUFR']
df

6. 現在資料有977筆,就是上市公司資料,接著我們要將索引序號重新編排一下:

df = df.reset_index(drop=True)
df

7. 最後我們把這寫成一個 function:

def crawler_stock_name(req_code):
# req_code:2 上市,
# req_code:4 上櫃
res = requests.get("http://isin.twse.com.tw/isin/C_public.jsp?strMode=" + str(req_code))
df = pd.read_html(res.text)[0]
# 設定column名稱
df.columns = df.iloc[0]
# 刪除第一行
df = df.iloc[2:]
# 篩選資料
df = df[df['CFICode'] == 'ESVUFR']
# index 序號重新編號
df = df.reset_index(drop=True)
return df

要取得上市公司的資料就執行:

df = crawler_stock_name(2)
df

要取得上櫃公司的資料就執行:

df = crawler_stock_name(4)
df
上櫃公司809家

下篇再來講一下如何將股票代碼和公司名稱做一個索引。

你可以參考:

1.  使用 Python 製作台股代碼與股票名稱對應字典(二)





3 則留言: