自制炒股盯盘神器——python实现(3)

   炒股盯盘很累?想自动获取每日某股票的交易信息?想实时监控某只股票?本文“自制炒股盯盘神器”帮你实现!在前两节(第一节第二节)笔者总结了如何获取某只股票的基本信息并如何处理数据的经验,本文讲当某只股票涨幅发生较大变化时如何提醒我们······

   当我们从股市获取到有用的信息后,还需将其发送给自己。实现这种功能的方法有很多,我们这里只讲通过往邮箱发电子邮件的方式提醒我们。本次代码中需要两个邮箱做测试,一个用来发邮件,另一个用来收邮件,笔者用常见的163邮箱和QQ邮箱做示范!

1. 准备工作

   利用邮箱自动发送邮件时,必须要获取发信邮箱的授权码,我们以163邮箱为例开启该邮箱的授权码。首先登录163邮箱,然后按照下图的提示,点击设置->POP3/SMTP/IMAP,进入开启授权的界面:
在这里插入图片描述
然后直接点击开启,跟着网页提示的流程就可以开启邮箱的授权服务。这个环节需要授权密码,我们下面就会用到。QQ邮箱的授权码获取方法跟这个十分类似,也是进入邮箱后:设置–>POP3/SMTP,然后开启即可。
   与前面两节类似,python有专门的库用来自动发送邮件,该模块在安装python的时候会自动安装,所以我们直接用即可。发送邮件的代码并不复杂,这里不再展开讲里面的函数和类方法,直接给出一些我们可能用到的邮件配置示例程序。

2. 发送普通文本

import smtplib #引用库文件
from email.mime.text import MIMEText

#邮件正文
msg = MIMEText('Test: Here is an Email from Python!') #创建邮件对象

#设置邮件的主题、发件人、收件人
msg['Subject'] = 'TEST' #邮件主题
msg['from'] = '[email protected]'  #发件人邮箱账号
msg['To'] = '[email protected]' #收件邮箱的账号
#发送邮件
s = smtplib.SMTP_SSL('smtp.163.com',465) #选择发送人邮件的SMTP服务器地址,配置网络端口465 --备注1
s.login('[email protected]','lalalala') #登录邮箱 --备注2
s.send_message(msg) #发送邮件
s.quit() #退出邮箱
print('Send Successfully!') #提示信息

解释一下上面代码注释里的备注:
备注1:如果用QQ邮箱发送邮件,只需要把“smtp.163.com”改为“smtp.qq.com”即可,二者的默认端口一样,所以第二个参数不用修改。
备注2:登录邮箱的账号为发件人邮箱账号,第二个参数就是上面我们讲的邮箱授权码。
运行上面的代码,登录收件人邮箱,我们就会收到该邮件。

3. 发送超链接、网页

   除了发送正文以外,利用Python还可以发送网页链接以及用HTML语言渲染的网页,代码框架和上面的发送文本信息类似,只需要做一些小小的修改即可。下面给出示例程序:

import smtplib
from email.mime.text import MIMEText

#邮件正文,发送了一个html语言渲染的段落,然后又添加了一个网页链接
mail_msg ='''  
<p>这是一个段落</p> 
<p><a href = "https://blog.csdn.net/qq_42144047/article/details/104684668">自制盯盘神器第一节</a></p>
'''
msg = MIMEText(mail_msg,'html','utf-8') #创建邮件对象,第一个参数是正文内容,第二个参数表示正文内容由HTML渲染,第三个参数表示编码方式,支持中文。

#设置邮件的主题、发件人、收件人
msg['Subject'] = 'TEST' #邮件主题
msg['from'] = '[email protected]'  #发件人邮箱账号
msg['To'] = '[email protected]' #收件邮箱的账号
#发送邮件
s = smtplib.SMTP_SSL('smtp.163.com',465) #选择发送人邮件的SMTP服务器地址,配置网络端口465 
s.login('[email protected]','lalalala') #登录邮箱
s.send_message(msg) #发送邮件
s.quit() #退出邮箱
print('Send Successfully!') #提示信息

4. 发送附件

   第二节笔者讲了一点点处理数据并把结果存储到excel表格中的例子,这里的发送附件我们就可以自动发送excel表格,有的时候还可以发送一些统计图等。这里给出发送邮件附件的例子:

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart #注意,添加了一个附件库

msg = MIMEMultipart() #创建附件
msg.attach(MIMEText('Attach Test!')) #邮件正文
att = MIMEText(open('SSI.xlsx','rb').read(),'base64','utf-8') # 创建附件变量
att['Content-Type'] = 'application/octet-stream'
att['Content-Disposition'] = 'attacgment;filename = "share.xlsx"' #定义附件文件在邮件中的名字和后缀
msg.attach(att) 

#设置邮件的主题、发件人、收件人
msg['Subject'] = 'TEST' #邮件主题
msg['from'] = '[email protected]'  #发件人邮箱账号
msg['To'] = '[email protected]' #收件邮箱的账号
#发送邮件
s = smtplib.SMTP_SSL('smtp.163.com',465) #选择发送人邮件的SMTP服务器地址,配置网络端口465 
s.login('[email protected]','lalalala') #登录邮箱
s.send_message(msg) #发送邮件
s.quit() #退出邮箱
print('Send Successfully!') #提示信息

   从头到尾解释一下,注意发送附件时需要添加相应的附件库,否则可能会报错。发邮件时我们都知道,即便是发了附件,我们也需要发送正文,所以要添加正文。然后先创建附件对象,然后指明附件在电脑中的位置,如果上面的代码所处的py文件与附件在同一个文件夹,我们只需要指明待发送的附件名即可。下面就是一些类似模板的操作,笔者不再解释(太复杂,解释清楚也跟这篇文章的主题无关,如果实在感兴趣就去百度“HTTP请求 几种常见的Content-Type类型”吧)。在后面就是定义附件文件在邮件中的名字和后缀。然后绑定附件与邮件,后面就是发送了,不再赘述!

5. 总结

   既然是盯盘神器,那么程序就需要一直运行帮我们“盯”住股票或股市,那么怎么才能让程序一直运行呢?难道让自己的电脑没日没夜的开着?下一节就解决这样的问题,敬请期待!如果大家感兴趣,可以关注公众号“24K纯学渣”,更多文章和相关工具、资源等第一时间将在该公众号更新。欢迎大家学习交流,上述如有不妥之处也非常欢迎大家评论指出!

发布了25 篇原创文章 · 获赞 9 · 访问量 6187

猜你喜欢

转载自blog.csdn.net/qq_42144047/article/details/104847577
今日推荐