Python股票代碼抓取 上市股票一把抓

Python怎麼抓上市上櫃所有股票代碼?
常見一些api可以抓股票代碼,但要申請可能都是公司等級
並且有可能要付錢??? (但我沒錢)
這次使用Python爬蟲股票代碼下來 使用
所有股票代碼解析範例都可以在這裡面獲得

1. 找尋所有股票代碼網站

http://isin.twse.com.tw/isin/C_public.jsp?strMode=2
我發現這個網址裡面有現在上市所有股票代碼
並且使用簡單的html表格呈現
看起來非常好解析

Python股票代碼

2. python解析html表格

python pandas read_html

我們要解析就是使用pandas套件
pandas的read_html可以解析表格
專門解析html的tr或是td標籤

Firstname Lastname Age

開始解析html

import requests
import pandas as pd

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

結果

看起來效果不錯
但中間有一些其他看起來不是股票代碼的東西
先不理他其他步驟會把它處理掉

python抓股票代碼4

3. 有價證券代號塞入欄位

裡面有七個欄位

['有價證券代號及名稱', '國際證券辨識號碼(ISIN Code)', '上市日', '市場別', '產業別', 'CFICode', '備註']

將剛剛解析出來的df塞進去

df.columns = ['有價證券代號及名稱', '國際證券辨識號碼(ISIN Code)', '上市日', '市場別', '產業別', 'CFICode', '備註']

4. 過濾股票代碼

我最終有獲得的是4位數的股票代碼
但是欄位df['有價證券代號及名稱']
給我的是1101 台泥
需要字串切割中間空白處
並且符合前面4位數且前面是數字

python正規表達式

import re
pattern = "[0-9]"
if re.search(pattern, 文字):
    # 符合純數字

python字串切割

string = "1101 台泥"
splitList = string.split(' ')
# splitList[0] = 1101
# splitList[1] = 台泥

5. 最終程式碼

import requests
import pandas as pd
import re

res = requests.get("http://isin.twse.com.tw/isin/C_public.jsp?strMode=2")
df = pd.read_html(res.text)[0]
df.columns = ['有價證券代號及名稱', '國際證券辨識號碼(ISIN Code)', '上市日', '市場別', '產業別', 'CFICode', '備註']

stackCodeDict = {}
for code in df['有價證券代號及名稱']:
    pattern = "[0-9]"
    stackCode = code.split(' ')
    if stackCode[0] and re.search(pattern, stackCode[0]) and len(stackCode[0]) == 4:
        print(str(stackCode[0]) + stackCode[1])
        stackCodeDict[stackCode[0]] = stackCode[1]

print(stackCodeDict)


6. 輸出結果

python抓股票代碼1

我之後是有儲存起來
之後就可以利用這些股票代碼再去做一些交易策略運用
之後有興趣我在繼續寫

參考文件

【Day5】取得資訊-Python #2:抓股票資料
如何用Python獲得上市上櫃股票清單?s

Python更多文章


Python 檢查dict是否有這個key



[教學] Line Bot 機器人不求人 – 範例 (Python)



Python – Selenium 繞過”這個瀏覽器或應用程式可能有安全疑慮”



python 各種均線 10MA/20MA均線 | pandas安裝



python sleep 暫停幾秒執行 – 2021年



PyAutoGUI Python控制電腦 | 按鍵精靈 | 鍵盤控制



python binance币安利用ccxt完成虛擬貨幣自動化交易



python write dictionary to text file | dict 寫入讀取

Categorized in: