Day 18 - 取得所有Contract程序范例

使用Shioaji API,第一次接触的人最常遇到的问题就是要如何抓所有的股票资料
Day 03 - Contract这篇文章中有说明Contract的种类及抓取的方式,下面就示范如何抓所有的股票资讯,并透过pandas汇出成csv档。

import os
from dotenv import load_dotenv
import shioaji as sj
import pandas as pd

load_dotenv('D:\\python\\shioaji\\.env') #读取.env中的环境变数
api = sj.Shioaji()
api.login(
    person_id=os.getenv('YOUR_PERSON_ID'), 
    passwd=os.getenv('YOUR_PASSWORD')
)

stock_list = [] #建立一个list,用来存放stock的contract

for exchange in api.Contracts.Stocks: #遍历Stocks底下所有的exchange
    for stock in exchange: #遍历该exchange底下所有的stock contract
        stock_list.append({**stock}) #将stock contract中的属性转成dict并加入stock_list中

df = pd.DataFrame(stock_list) #将stock_list转换成DataFrame
df.to_csv('stock_list.csv', encoding="utf_8_sig") #将DataFrame汇出成csv,并指定encoding

api.logout()

在上面的程序码,可以看到for in的方式遍历api.Contract.Stocks.XXX底下的股票Contract

同样的,若要抓取所有期货的contract并汇出成csv,可参考以下范例:

import os
from dotenv import load_dotenv
import shioaji as sj
import pandas as pd

load_dotenv('D:\\python\\shioaji\\.env')
api = sj.Shioaji()
api.login(
    person_id=os.getenv('YOUR_PERSON_ID'), 
    passwd=os.getenv('YOUR_PASSWORD')
)

future_list = []
for category in api.Contracts.Futures:
    for future in category:
        future_list.append({**future})

df = pd.DataFrame(future_list)
df.to_csv('future_list.csv', index=False, encoding="utf_8_sig")

api.logout()

<<:  人脸辨识-day18 人脸辨识的隐忧

>>:  Day 18 - custom hook

Day 18 | 万年范例-TodoList

没错又是万年的demo作品- TodoList 今天我们先来做最最最阳春的TodoList,只先做简...

Day30 语法改革!零基础新手也能读懂的JS - 最终回!

终於来到我们第三十天,在最後的第三十天,我想说几句完赛感言! 其实无法想像我居然有这个毅力可以撑过一...

自我笔记 - django 系列 [模型基础篇]

django - Models 本篇说明 django 使用资料库的方式 以及应用面会使用到的多资料...

Best Web Hosting Affiliate Program

The platform provides a range of hosting options, ...

Day 18: To DI ? Or not DI? 依赖注入的存在意义

Keyword: Dependency Injection 到Day20 使用Koin管理依赖注入显...