自从支付宝有余额宝这个赚钱的东东,我的银行卡几乎就没有装什么钱了。
不过除了支付宝,京东的小金库和微信的零钱通也可以试试,况且七日年化都在变化。
那么问题来了,可不可以写个脚本,实时通知我七日年化的变化,来让我合理调整投资金额呢?
Now, let me try to do it.下面就用python来解决。
注意:市场有风险,理财需谨慎。
思路
1.从各个平台获取基金相关信息
2.从基金数据网站爬取实时数据
3.获取七日年化并按照大小排列
4.判断临界条件发送邮件通知我
基金相关信息
1.支付宝----余额宝----银华货币A
2.微 信----零钱通----富国富钱包货币
3.京 东----小金库----鹏华增值宝货币
4.可补充
获取相关数据
这里选择的是东方财富网
这里用类方法get_percentage()来表示,就是获取网页源代码然后截取字符串。
def get_percentage(self):
html = self.gethtml(self.main_url(), self.headers(referer='http://fund.eastmoney.com/'))
#记录时间 #七日年化 #万份收益
return self.getabstrs('span class="fix_date">', '<', html), \
self.getabstrs('ui-font-middle ui-color-red ui-num">', '%<', html) , \
self.getabstrs('span class="fix_dwjz bold ui-color-red">', '<', html)
数据降序排列
def eastmoneySort(data):
eastmoney = [Eastmoney(id,name) for (id,name) in data]
eastmoney.sort(key=lambda x:x.money,reverse=True)#由大到小,降序输出
#for element in eastmoney:
# print(element.name,":",element.money)
return eastmoney
判断邮件条件
将目前已知七日年化对应id排列记录在ini文件,判断排列出现变化则发送邮件。
def is_change(new_id_list): # 优化为ini配置文件
if os.access("eastmoney.ini", os.F_OK):
with open('eastmoney.ini',"r", encoding="utf-8") as f:
old_id_list = f.read()
if old_id_list == new_id_list:
return False
else:
return True
else:
with open('eastmoney.ini', "w", encoding="utf-8") as f:
f.write('new_id_list')
return True
发送邮件
def mail_is_ok(my_sender, my_pass, to_users, my_message):
try:
msg=MIMEText(my_message, 'plain', 'utf-8')
msg['From']=formataddr(["noreply", 'noreply@mail.com']) # 括号里的对应发件人邮箱昵称、发件人邮箱账号
msg['To']=formataddr(["someone", 'someone@mail.com']) # 括号里的对应收件人邮箱昵称、收件人邮箱账号
msg['Subject']="基金七日年化报告" # 邮件的主题,也可以说是标题
server=smtplib.SMTP_SSL("smtp.qq.com", 465) # 发件人邮箱中的SMTP服务器,端口是465
server.login(my_sender, my_pass) # 括号中对应的是发件人邮箱账号、邮箱密码
server.sendmail(my_sender, to_users, msg.as_string()) # 括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件
server.quit() # 关闭连接
except Exception:
return False
return True
代码及演示
eastmoney-get
把它放在服务器每天定时执行就可以了。