Baostock 测试 · 沪深300成分股 2026-10-02

简介 —— 这段 Python 脚本使用 baostock 免费证券数据接口,登录后查询沪深300指数的最新成分股列表,并将结果保存为 CSV 文件。代码涵盖了登录、查询、遍历结果集、DataFrame 构建、CSV 导出、登出等完整流程,非常适合作为 A 股量化数据获取的入门模板。

1. 导入所需库

两个核心库:Baostock 数据接口与 Pandas 数据处理。

import baostock as bs import pandas as pd

2. 登陆 Baostock 系统

说明 — 使用 Baostock 任何接口前必须先 login(),返回对象包含 error_code 与 error_msg。
# 登陆系统 lg = bs.login() # 显示登陆返回信息 print('login respond error_code:' + lg.error_code) print('login respond error_msg:' + lg.error_msg)

3. 查询沪深300成分股

# 获取沪深300成分股 rs = bs.query_hs300_stocks() print('query_hs300 error_code:' + rs.error_code) print('query_hs300 error_msg:' + rs.error_msg)

query_hs300_stocks() 返回一个结果集对象,需要逐行读取。

4. 遍历结果集并构建 DataFrame

使用 while 循环配合 rs.next() 逐行读取,rs.get_row_data() 获取当前行数据。
# 打印结果集 hs300_stocks = [] while (rs.error_code == '0') & rs.next(): # 获取一条记录,将记录合并在一起 hs300_stocks.append(rs.get_row_data()) result = pd.DataFrame(hs300_stocks, columns=rs.fields)

5. 保存 CSV & 打印结果

# 结果集输出到csv文件 result.to_csv("hs300_stocks.csv",index=False) print(result)
提示 — index=False 避免将 DataFrame 索引写入 CSV,保持文件整洁。

6. 登出系统

# 登出系统 bs.logout()

良好的编程习惯:使用完毕后主动登出,释放连接资源。

完整代码

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) # 获取沪深300成分股 rs = bs.query_hs300_stocks() print('query_hs300 error_code:' + rs.error_code) print('query_hs300 error_msg:' + rs.error_msg) # 打印结果集 hs300_stocks = [] while (rs.error_code == '0') & rs.next(): # 获取一条记录,将记录合并在一起 hs300_stocks.append(rs.get_row_data()) result = pd.DataFrame(hs300_stocks, columns=rs.fields) # 结果集输出到csv文件 result.to_csv("hs300_stocks.csv",index=False) print(result) # 登出系统 bs.logout()

关键点总结

bs.login() 必须先登录
query_hs300_stocks() 获取成分股
rs.next() 逐行遍历
rs.fields 作为列名
保存为 hs300_stocks.csv
bs.logout() 释放资源