Python 关于网站更新消息并发送邮箱通知

Python 关于网站更新消息并发送邮箱通知:

1.目的:笔者由于需要及时收到教育厅官网推送的消息,又由于笔者需要准备应考,所以特写一个脚本来检测网站最新的发布。

2.语言:python3 开发编译器:Sublime Text3

3.设计思路:爬取网站第一条推送的数据-->与数据库预存信息进行比对-->返回值为true则调用发送邮件函数,否则继续检测。使用shell脚本进行程序循环执行。

代码实现: 

一、发送邮件代码:

def hansh():
    # 网易邮箱smtp
    HOST = 'smtp.163.com'
    PORT = '465'
    fajianren = '邮箱@163.com'
    shoujianren = '邮箱@qq.com'
    now_time = datetime.datetime.now()
    # 邮件标题
    title = '教育厅信息内容'
    # 邮件内容
    context = '正文部分'

    smtp_obj = smtplib.SMTP_SSL(HOST, 465)  
    #此处密码需要为授权码
    res = smtp_obj.login(user=fajianren, password='授权码')
    print('发送结果:',res)
    #发邮件
    msg = '\n'.join(['From: {}'.format(fajianren), 'To: {}'.format(shoujianren), 'Subject: {}'.format(title), '', context])
    smtp_obj.sendmail(from_addr=fajianren, to_addrs=shoujianren, msg=msg.encode('utf-8'))

    print(context)

注:发布至阿里云服务器,由于阿里云将25端口关闭,特使用465端口,以网易云邮箱为例。

二、爬虫代码:

#爬虫,抓取教育局官网信息
def infojyt(url):
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Maxthon/4.4.3.4000 Chrome/30.0.1599.101 Safari/537.36"
    }

    req = urllib.request.Request(url, headers=headers)
    response = urllib.request.urlopen(req)

    HTML = response.read().decode("utf-8")

    pat = r'<recordset>(.*?)</recordset>' 
    re_jytinfo = re.compile(pat, re.S)
    infoList = re_jytinfo.findall(HTML)
    # dic = {}
    # for div in infoList:
    #     re_info = re.compile(r'<a href="/art/2018/12/6/art_55512_7945149.html" target="_blank">(.*?)</a>', re.S)
    #     info = re_info.findall(div)
    #     info = info[0]

    return infoList

url = "http://jyt.jiangsu.gov.cn/col/col55512/index.html"
info = infojyt(url)

 

三、数据库代码:

#数据库连接
# 1.获取连接对象,发布到服务器
conn = pymysql.connect(host='ip', port=3306, user='账号', passwd='密码', db='test', charset='utf8')

cursor = conn.cursor() 


selectRowNums = cursor.execute('SELECT * FROM jytin')

# 5.遍历结果,获取查询的结果
selectResultList = cursor.fetchone()
infol = "%s"%selectResultList
print(str(info).find(infol)>0)

if str(info).find(infol)>0:
    hansh()
# 提交

conn.commit()
# 关闭游标
cursor.close()
# 关闭连接
conn.close()
#----------------------------------------
#--------------------
#定时器
#此处用shell脚本执行
#------------------

需要导入的包:

import urllib.request
import re
import smtplib
import datetime
import pymysql

整体代码就不贴出来了,有兴趣的小伙伴可以发邮件至:[email protected]或者留言与我交流。

宗旨:技术的意义在于分享!

发布了41 篇原创文章 · 获赞 108 · 访问量 10万+

猜你喜欢

转载自blog.csdn.net/qq_37857921/article/details/85278076