使用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()
没错又是万年的demo作品- TodoList 今天我们先来做最最最阳春的TodoList,只先做简...
终於来到我们第三十天,在最後的第三十天,我想说几句完赛感言! 其实无法想像我居然有这个毅力可以撑过一...
django - Models 本篇说明 django 使用资料库的方式 以及应用面会使用到的多资料...
The platform provides a range of hosting options, ...
Keyword: Dependency Injection 到Day20 使用Koin管理依赖注入显...