用python实现简单的网站信息更新自动通知

用python实现简单的网站信息更新自动通知

因为需要及时收到学校研究生网站的消息,每过一小段时间去网站看耗费精力,且不一定能及时的收到消息,所以萌生了用程序定时检测网站是否更新的想法。代码地址点这里

实现功能

检测目标网站更新,获取更新并以邮件形式通知。

适用场景

      票务网站活动更新通知
      学校教务网站更新通知
      新剧新番更新通知
      查成绩通知
      通过程序发邮件,节约登录时间
      ......

编译环境

语言:python3 开发编译器:pycharm

设计思路

爬取网站推送的信息作为预存信息参考–>每隔5分钟爬取一次信息,与数据库预存信息进行比对–>不一样则调用发送邮件函数,否则继续检测。
设计流程图

代码实现

1 调用数据库
Time、re、requests、datetime、smtplib
Time: 实现每隔固定时间检测信息是否更新
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)

运行说明

  • 16
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值