python3使用baostock获取沪深300成分股历史数据

参考链接:

        baostock模块:www.baostock.com

         获取沪深300历史成分股:https://zhuanlan.zhihu.com/p/639250910

        (网上只有少部分成分股名单资源,且价格不低,所以自己动手)。

         代码拔取从start_year到end_year的沪深300历史成分股信息,以半年为单位,最后以file_name为路径和文件名保存。 

        代码:

import baostock as bs
import pandas as pd
# 登陆系统
lg = bs.login()
# 显示登陆返回信息
print('login respond error_code:'+lg.error_code)
print('login respond  error_msg:'+lg.error_msg)

start_year = 2006
end_year = 2023
file_name = "G:/hs300_stocks.csv"    #文件路径和文件名

keep_index = True
hs300_stocks = [] 
for i in range(start_year, end_year + 1):
    date1 = str(i)+'-01-31'    # 获取沪深300成分股, 上半年
    rs1 = bs.query_hs300_stocks(date1)
    #print('query_hs300 error_code:'+rs1.error_code)
    #print('query_hs300  error_msg:'+rs1.error_msg)
    
    while (rs1.error_code == '0') & rs1.next():    # 获取一条记录,将记录合并在一起      
        hs300_stocks.append(rs1.get_row_data())

    date2 = str(i)+'-07-31'    # 获取沪深300成分股, 下半年
    rs2 = bs.query_hs300_stocks(date2)
    #print('query_hs300 error_code:'+rs2.error_code)
    #print('query_hs300  error_msg:'+rs2.error_msg)
    
    while (rs2.error_code == '0') & rs2.next():    # 获取一条记录,将记录合并在一起      
        hs300_stocks.append(rs2.get_row_data())

result = pd.DataFrame(hs300_stocks, columns=rs1.fields)# 结果集输出到csv文件
result.to_csv(file_name, encoding="gbk", index=False)
#print(result)# 登出系统
bs.logout()

你可能感兴趣的:(python)