
获取了A股市场上所有的股票名称和代码后,下面根据股票代码获取相关的数据。
打开baostock网站(A股K线数据 – www.baostock.com),找到A股K线数据标签。
该页介绍了获取历史A股K线数据的API接口,query_history_k_data_plus().
给了一个示例 ,下面我们将示例复制到pycharm中,在此基础上修改,获取所有A股市场上的价格数据。
新建一个get_stock.py 文件,将示例代码粘贴到文件中,进行简单的修改,修改csv文件输出路径,文件名按照股票代码保存:

运行程序,结果显示正常,在data文件夹下出现了以600000命名的csv文件。

接下来作一下修改。
首先读取所有股票代码的csv文件。
# 读取stock_industry.csv数据
df = pd.read_csv(r'data\\stock_industry.csv',encoding="gbk")
code_list = df['code'].values.tolist()
定义一个data_list列表,用来保存每个股票的行情数据。
data_list = []
利用for循环遍历code_list列表。
for code in code_list:
对接口进行修改,将原来的股票代码改成code变量。
rs = bs.query_history_k_data_plus(code,
"date,code,open,high,low,close,preclose,volume,amount,adjustflag,turn,tradestatus,pctChg,isST",
start_date='2012-01-01',
end_date='2023-12-11',
frequency="d",
adjustflag="3")
利用while循环,将获取的数据保存到data_list中,并转换成pandas的dataframe。
然后将data_list列表清空,最后将数据保存到一个csv文件中。
while (rs.error_code == '0') & rs.next():
# 获取一条记录,将记录合并在一起
data_list.append(rs.get_row_data())
result = pd.DataFrame(data_list, columns=rs.fields)
data_list.clear()
#### 结果集输出到csv文件 ####
result.to_csv(f"data\\{code}.csv", index=False)
print(result)
运行程序,data文件夹下显示了以股票代码为文件名的csv文件。

完整代码如下:
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)
# 读取stock_industry.csv数据
df = pd.read_csv(r'data\\stock_industry.csv',encoding="gbk")
code_list = df['code'].values.tolist()
data_list = []
for code in code_list:
#### 获取沪深A股历史K线数据 ####
# 详细指标参数,参见“历史行情指标参数”章节;“分钟线”参数与“日线”参数不同。“分钟线”不包含指数。
# 分钟线指标:date,time,code,open,high,low,close,volume,amount,adjustflag
# 周月线指标:date,code,open,high,low,close,volume,amount,adjustflag,turn,pctChg
rs = bs.query_history_k_data_plus(code,
"date,code,open,high,low,close,preclose,volume,amount,adjustflag,turn,tradestatus,pctChg,isST",
start_date='2012-01-01',
end_date='2023-12-11',
frequency="d",
adjustflag="3")
print('query_history_k_data_plus respond error_code:' + rs.error_code)
print('query_history_k_data_plus respond error_msg:' + rs.error_msg)
#### 打印结果集 ####
while (rs.error_code == '0') & rs.next():
# 获取一条记录,将记录合并在一起
data_list.append(rs.get_row_data())
result = pd.DataFrame(data_list, columns=rs.fields)
data_list.clear()
#### 结果集输出到csv文件 ####
result.to_csv(f"data\\{code}.csv", index=False)
print(result)
#### 登出系统 ####
bs.logout()
发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/78350
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!