理财提醒脚本

自从支付宝有余额宝这个赚钱的东东,我的银行卡几乎就没有装什么钱了。
不过除了支付宝,京东的小金库和微信的零钱通也可以试试,况且七日年化都在变化。
那么问题来了,可不可以写个脚本,实时通知我七日年化的变化,来让我合理调整投资金额呢?
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
把它放在服务器每天定时执行就可以了。
25.1.png
25.2.png

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注