python3开发编译器:pycharm设计思路爬取网站推送的信息
优采云 发布时间: 2021-07-27 06:37
python3开发编译器:pycharm设计思路爬取网站推送的信息
使用python实现简单的网站信息更新自动通知
因为我们需要及时收到学校*敏*感*词*网站的消息,短时间后去网站会消耗体力,可能无法及时收到消息,于是就诞生了一个程序来检查网站 是否是更新想法。点击此处获取代码地址。
实现功能
检测目标网站update,获取更新并邮件通知。
适用场景
票务网站活动更新通知
学校教务网站更新通知
新剧新番更新通知
查成绩通知
通过程序发邮件,节约登录时间
......
编译环境
语言:python3开发编译器:pycharm
设计理念
抓取网站推送的信息作为预存信息的参考->每5分钟抓取一次信息,与数据库中预存的信息进行比较->如果不同,调用发送邮件函数, 否则继续检查。
代码实现
1 调用数据库
时间、重新、请求、日期时间、smtplib
时间:实现信息是否每隔固定时间更新一次。
Re: 基于正则表达式匹配字符串并提取信息列表
Datetime:输出当前时间
Smtplib:发送邮件
2 提取信息列表
def qingqiu():
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 \
(KHTML, like Gecko) Chrome/14.0.835.163 Safari/535.1'} #设置headers信息,模拟成浏览器取访问网站
req = requests.get('目标网站网址', headers=headers) #向网站发起请求,并获取响应对象
content = req.text #获取网站源码
pattern = re.compile('.html(.*?)</a>').findall(content) #正则化匹配字符,根据网站源码设置
return pattern #运行qingqiu()函数,会返回pattern的值
3 更新检测
def update():
print('通知系统启动中')
old_pattern = qingqiu() #记录原始内容列表
while True:
new_pattern = qingqiu() #记录新内容列表
if (new_pattern!= old_pattern): #判断内容列表是否更新
old_pattern=new_pattern #原始内容列表改变
send_email() #发送邮件
else:
now=datetime.datetime.now()
print(now,"尚无更新")
time.sleep(300) # 五分钟检测一次
4 发送邮件
def send_email():
HOST = 'smtp.163.com' # 网易邮箱smtp
PORT = '465'
fajianren = '*****@163.com' #发送人邮箱
shoujianren = '******@qq.com' #收件人邮箱
title = '信息内容' # 邮件标题
new_pattern = qingqiu() #提取网页内容列表
context = new_pattern[0] # 邮件内容
smtp = smtplib.SMTP_SSL(HOST, 465) # 启用SSL发信, 端口一般是465
res = smtp.login(user=fajianren, password='******') # 登录验证,password是邮箱授权码而非密码,需要去网易邮箱手动开启
print('发送结果:', res)
msg = '\n'.join(
['From: {}'.format(fajianren), 'To: {}'.format(shoujianren), 'Subject: {}'.format(title), '', context])
smtp.sendmail(from_addr=fajianren, to_addrs=shoujianren, msg=msg.encode('utf-8')) # 发送邮件
print(context)
操作说明