import tushare as ts
import pandas as pd
import time
import os
import smtplib #smtp协议包
from email.mime.text import MIMEText #用于构建邮箱内容
os.chdir('E:/all_trading_data/') #保存的绝对路径
pro = ts.pro_api('')# 再tushare注册账号后生成的API复制过来放到里边
pd.set_option('expand_frame_repr', False)#True就是可以换行显示。设置成False的时候不允许换行
pd.set_option('display.max_columns', None)# 显示所有列
#pd.set_option('display.max_rows', None)# 显示所有行
pd.set_option('colheader_justify', 'centre')# 显示居中
#df_daily = pro.daily() 获取所有股票日行情信息
#df_basic = pro.stock_basic() 获取所有股票基本信息
def get_all_stockdata(start_date, end_date):
msg = 0
trade_d = pro.trade_cal(exchange='SSE', is_open='1', start_date=start_date, end_date=end_date, fields='cal_date')
for date in trade_d['cal_date'].values:
# 获取所有股票的行情数据
df_daily = pro.daily(trade_date=date)
# 获取所有股票的基本信息
df_basic = pro.stock_basic()
#行情数据跟基本信息数据合并生成一个csv数据文件
#on='ts_code'以ts_code为索引,合并数据,how='outer',取并集
df_all = pd.merge(left=df_basic, right=df_daily, on='ts_code', how='outer')
#删除symbol列数据,跟ts_code数据重复
df_all = df_all.drop('symbol', axis=1)
#强制转换成str字符串格式
df_all['ts_code'] = df_all['ts_code'].astype(str)
# 保存数据,不保存索引,如果index=True,则保存索引会多出一列
df_all.to_csv(str(date) + '_ts.csv', index=False, encoding='gbk')
print(df_all)
print('%s is downloaded.' % (str(date)))
msg = 1
return df_all,msg
def send_email (content):
# 邮件发送
msg_from = "******@126.com" #发件人邮箱
password = " " #客户端授权码
msg_to = " " #收件人邮箱
#构建邮箱内容
subject = "股票行情数据下载"
content = content
msg = MIMEText(content) #msg邮件内容对象
msg["Subject"] = subject
msg["From"] = msg_from
msg["To"] = msg_to
#发送邮件
# smtplib.SMTP_SSL("发件人的邮箱服务器地址",端口号)
smtpObj = smtplib.SMTP_SSL("smtp.126.com",465) #smtpObj smtp对象
smtpObj.login(msg_from,password)#登录
smtpObj.sendmail(msg_from,msg_to,str(msg)) #发送邮件
print("发送成功")
smtpObj.quit()
def main():
msg = get_all_stockdata('20220101', '20220104')
print('-------------',msg)
if msg == 1:
content = "数据下载成功!"
else:
content = "数据下载失败!"
send_email(content)
if __name__ == '__main__':
main()
股票数据获取和邮件发送通知
最新推荐文章于 2024-07-06 12:03:33 发布