产品介绍

证券宝是一个免费、开源的证券数据平台,提供大量准确、完整的证券历史行情数据、上市公司财务数据等。

通过python API获取证券数据信12息,返回的数据格式:Pandas DataFrame类型,支持通过自定义的数据存储功能,将数据全部保存到本地后进行分析。目前只支持Python3.5及以上(暂不支持Python 2.x版本)。

安装使用

软件安装

pip install baostock

登入和登出

代码示例:

import baostock as bs

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

#### 登出系统 ####
logout = bs.logout()
# 显示登出返回信息
print('logout respond error_code:'+logout.error_code)
print('logout respond error_msg:'+logout.error_msg)

数据获取

以获取沪深300成分股为例,具体实现代码如下:

import baostock as bs
import pandas as pd
from sqlalchemy import create_engine

# 登陆系统
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文件
def export_to_csv():
    result.to_csv("E:/hs300_stocks.csv", encoding="gbk", index=True)


# 结果集输出到Excel文件
def export_to_xlsx():
    result.to_excel("E:/hs300_stocks.xlsx", encoding="gbk", index=True)


# 结果集输出到xlsx文件
def export_to_json():
    result.to_json("E:/hs300_stocks.json")


# 结果集导出到Markdown文件
def export_to_md():
    result.to_markdown("E:/hs300_stocks.md")


# 结果集导入到MySql数据库
def export_to_msql():
    connection = create_engine('mysql+pymysql://root:root@localhost:3306/data')
    con = connection.connect()
    '''
        if_exists 参数用于当目标表已经存在时的处理方式默认是 fail,即目标表存在就失败,另外两个选项是 replace 表示替代原表,即删除再创建,append 选项仅添加数据。使用 append 可以达到要求。
    '''
    result.to_sql(name="stock", con=con, if_exists='append', index=True)


def main():
    export_to_csv()
    export_to_xlsx()
    export_to_json()
    export_to_msql()
    export_to_md()
    # 登出系统
    bs.logout()


if __name__ == '__main__':
    main()

导出为Excel

# 结果集输出到Excel文件
def export_to_xlsx():
    result.to_excel("E:/hs300_stocks.xlsx", encoding="gbk", index=True)

导出为CSV

# 结果集输出到csv文件
def export_to_csv():
    result.to_csv("E:/hs300_stocks.csv", encoding="gbk", index=True)

导出为JSON

# 结果集输出到xlsx文件
def export_to_json():
    result.to_json("E:/hs300_stocks.json")

导出为Markdown

# 结果集导出到Markdown文件
def export_to_md():
    result.to_markdown("E:/hs300_stocks.md")

导入MySQL数据库中

# 结果集导入到MySql数据库
def export_to_msql():
    connection = create_engine('mysql+pymysql://root:root@localhost:3306/data')
    con = connection.connect()
    '''
        if_exists 参数用于当目标表已经存在时的处理方式默认是 fail,即目标表存在就失败,另外两个选项是 replace 表示替代原表,即删除再创建,append 选项仅添加数据。使用 append 可以达到要求。
    '''
    result.to_sql(name="stock", con=con, if_exists='append', index=True)

操作案例

获取沪深300成分股基本资料,代码如下:

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)

'''
返回数据说明 query_hs300_stocks
参数名称	参数描述
updateDate	更新日期
code	证券代码
code_name	证券名称
'''
# 获取沪深300成分股的基本资料
hs_data = bs.query_hs300_stocks()
print('query_hs300 error_code:'+hs_data.error_code)
print('query_hs300  error_msg:'+hs_data.error_msg)  

data_list = []
while (hs_data.error_code == '0') & hs_data.next():
    '''
    返回数据说明 query_stock_basic
    参数名称	参数描述
    code	证券代码
    code_name	证券名称
    ipoDate	上市日期
    outDate	退市日期
    type	证券类型,其中1:股票,2:指数,3:其它
    status	上市状态,其中1:上市,0:退市
    '''
    # 获取证券基本资料
    rs = bs.query_stock_basic(code=hs_data.get_row_data()[1])
    data_list.append(rs.get_row_data())
    # print(rs.get_data())

result = pd.DataFrame(data_list, columns=rs.fields)
# 结果集输出到csv文件
result.to_excel("E:\hstock_basic.xlsx",index=False)

# 登出系统
bs.logout()