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]或者留言与我交流。
宗旨:技术的意义在于分享!