Python数据挖掘将爬取数据每日邮件推送给指定人和附件内容

爬取数据想要实时知道每天的动态,加上邮箱推送岂不是更好,每天我在地铁上就能知道今天发生了什么大事。

前提是先定时爬取数据,然后推送数据在数据库读取,定义下主题即可实现,大部分代码参考之前unittest测试用例时的邮箱配置。我们使用两段代码,一部分是将标题内容在邮件中显示,二部分是在邮件中添加附件和链接

我习惯多做,哪怕失败,废话不多说将调试后的结果经验分享给大家,下面是详细代码:

#print('=====================标题显示在邮件中=====================')#!/usr/bin/env python# -*- coding: utf-8 -*-# @Time    : 2020/8/23 10:37# @Author  : Jianhua Wang# @Site    : 敏感话题在邮件中添加链接# @File    : sendEmail2.py# @Software: PyCharm import smtplibfrom email.mime.text import MIMEText# import scheduleimport pymysqlimport time user = '我是126的邮箱'pwd = '126邮箱的授权登陆码'to = '要发送给谁'  # 可以设置多个收件人,英文逗号隔开,如:'***@qq.com, ***@163.com'#邮件发送方法def send_email():    # 1.连接数据库    db = pymysql.connect(host='localhost', port=3306, user='root', password='root', database='pachong', charset='utf8')    company = '阿里巴巴'  #可以定义多个公司名称,注意-下面的sql要用in就不是等于了哈    today = time.strftime("%Y-%m-%d")  # 日期格式要与数据库中的date一致,否则取不到内容      cur = db.cursor()  # 获取会话指针,用来调用SQL语句    sql = 'SELECT * FROM test WHERE company = %s AND date = %s'  # SQL语句    cur.execute(sql, (company,today))  # 执行SQL语句    data = cur.fetchall()  # 提取所有数据,并赋值给data变量    print(data)  #调试用的    cur.close()  # 关闭会话指针    db.close()  # 关闭数据库链接     # 2.设置邮件正文和附件的msg    mail_msg = []    mail_msg.append('<p style="margin:0 auto">尊敬的简化小主,您好,以下是今天的热点话题监控报告,望查阅:</p>')  # style="margin:0 auto"用来调节行间距    mail_msg.append('<p style="margin:0 auto"><b>一、阿里巴巴舆情报告</b></p>')  # 加上<b>表示加粗    for i in range(len(data)):        href = '<p style="margin:0 auto"><a href="' + data[i][2] + '">' + str(i + 1) + '.' + data[i][1] + '</a></p>'        mail_msg.append(href)     mail_msg.append('<br>')  # <br>表示换行    mail_msg.append('<p style="margin:0 auto"><b>二、腾讯热点话题报告</b></p>')  # 加上<b>表示加粗    mail_msg.append('<p style="margin:0 auto">祝好</p>')    mail_msg.append('<p style="margin:0 auto">简化</p>')    mail_msg = '\n'.join(mail_msg)    print(mail_msg)     # 3.添加正文内容    msg = MIMEText(mail_msg, 'html', 'utf-8')     # 4.设置邮件主题、发件人、收件人    msg["Subject"] = "简化的监控报告"    msg["From"] = user    msg["To"] = to     # 5.发送邮件    s = smtplib.SMTP_SSL('smtp.126.com', 465)  # 选择126邮箱服务,默认端口为465    s.login(user, pwd)  # 登录qq邮箱    s.send_message(msg)  # 发送邮件    s.quit()  # 退出邮箱服务    print('发送成功!')  send_email()  # 调用邮件方法# 建立一个schedule任务,每天下午5点钟执行指令# schedule.every().day.at("8:30").do(send_email)# while True:#     schedule.run_pending()#     time.sleep(10)

一部分效果:

Python数据挖掘将爬取数据每日邮件推送给指定人和附件内容

一部分多个大标题自己灵活添加即可

#print('=====================邮件中添加附件=====================')

import smtplibfrom email.mime.text import MIMETextfrom email.mime.multipart import MIMEMultipartuser = '邮箱地址'pwd = '登录授权码'to = '收件人'  # 可以设置多个收件人,英文逗号隔开,如:'***@qq.com, ***@163.com' # 1.设置正文和附件的msgmsg = MIMEMultipart() # 2.添加正文内容,邮件正文内容mail_msg = '''<p>这个是一个常规段落</p><p><a href="https://www.baidu.com">这是一个包含链接的段落</a></p>'''msg.attach(MIMEText(mail_msg, 'html', 'utf-8')) # 3.再添加附件,这里的文件名可以有中文,但下面第三行的filename不可以为中文att1 = MIMEText(open('E:\\test.docx', 'rb').read(), 'base64', 'utf-8')  #本地要有文件或者搭建IIS服务器获取att1["Content-Type"] = 'application/octet-stream'# 下面的filename不可以为中文!!会无法解析att1["Content-Disposition"] = 'attachment; filename="test.docx"'msg.attach(att1) # 4.(固定写法)设置邮件主题、发件人、收件人msg['Subject'] = '测试邮件主题!'msg['From'] = usermsg['To'] = to # 5.发送邮件(固定写法)s = smtplib.SMTP_SSL('smtp.126.com', 465)s.login(user, pwd)s.send_message(msg)  # 发送邮件s.quit()print('发送成功!')

效果如下:

Python数据挖掘将爬取数据每日邮件推送给指定人和附件内容

好累,终于写完了~  算是小圆满了,还是有好多细的知识点还要学习,加油吧!