Python爬取并存储股票成长能力数据(最近三个季度)
Python爬取并存储股票成长能力数据(最近三个季度)
本代码示例展示如何使用Python爬取股票成长能力数据并将其存储到数据库中。代码示例演示如何获取最近三个季度的成长能力数据。
import baostock as bs
import pandas as pd
import pymysql
import datetime
# 登陆系统
lg = bs.login()
# 显示登陆返回信息
print('login respond error_code:'+lg.error_code)
print('login respond error_msg:'+lg.error_msg)
# 连接数据库
conn = pymysql.connect(host='localhost', port=3306, user='root',
password='123456', db='baostock', charset='utf8mb4')
# 获取游标
cursor = conn.cursor()
# 成长能力
growth_list = []
now = datetime.datetime.now()
for i in range(3):
year = now.year
quarter = now.quarter - i
if quarter < 1:
year -= 1
quarter += 4
rs_growth = bs.query_growth_data(code='sh.600000', year=year, quarter=quarter)
while (rs_growth.error_code == '0') & rs_growth.next():
growth_list.append(rs_growth.get_row_data())
result_growth = pd.DataFrame(growth_list, columns=rs_growth.fields)
# 打印输出
print(result_growth)
# 结果集插入到数据库
for index, row in result_growth.iterrows():
sql = "INSERT INTO cznl VALUES ('sh.600000', {}, {}, '{}', {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {})".format(
int(row[1]), int(row[2]), row[3], float(row[4]), float(row[5]), float(row[6]), float(row[7]), float(row[8]), float(row[9]), float(row[10]), float(row[11]), float(row[12]), float(row[13]), float(row[14]))
cursor.execute(sql)
conn.commit()
# 关闭游标和连接
cursor.close()
conn.close()
# 登出系统
bs.logout()
代码说明:
- 首先导入必要的库,包括
baostock用于获取股票数据,pandas用于处理数据,pymysql用于连接数据库,以及datetime用于获取当前时间。 - 连接到
baostock系统并获取登录信息。 - 连接到数据库,并获取游标。
- 使用循环遍历最近三个季度,获取每个季度的成长能力数据。
- 将获取到的数据存储到
growth_list列表中。 - 使用
pandas将growth_list列表转换为DataFrame对象。 - 将
DataFrame对象中的数据插入到数据库中。 - 关闭游标和数据库连接,并退出
baostock系统。
注意:
- 代码中的
sh.600000为股票代码,请根据实际情况修改。 cznl为数据库中的表名,请根据实际情况修改。- 数据库连接信息(主机地址、端口号、用户名、密码、数据库名)请根据实际情况修改。
运行代码:
- 确保已经安装了必要的库。
- 将代码保存为
.py文件。 - 运行代码,即可将最近三个季度的股票成长能力数据存储到数据库中。
代码优化:
- 可以使用函数封装代码,使代码更易于阅读和维护。
- 可以使用异常处理,提高代码的鲁棒性。
- 可以将代码部署到服务器,实现自动化运行。
总结:
本代码示例展示了如何使用 Python 爬取股票成长能力数据并将其存储到数据库中。代码可以方便地获取最近三个季度的成长能力数据,并将其保存到数据库中,方便后续的分析和使用。
原文地址: https://www.cveoy.top/t/topic/mzol 著作权归作者所有。请勿转载和采集!