python动态监测网页内容后邮件通知

#coding=utf-8
import urllib.request
import smtplib
from email.header import Header
from email.mime.text import MIMEText
from bs4 import BeautifulSoup
import ssl
import time

context = ssl._create_unverified_context()
url='https://yjs.qfnu.edu.cn/xsgz.htm';
tmp = {'history':None}

def send_mail(title, article, receiver):
    host = 'smtp.qq.com'
    user = '自己的邮箱'
    passwd = '自己的密码!!!'
    sender = user
    coding = 'utf8'
    message = MIMEText(article, 'plain', coding)
    message['From'] = Header(sender, coding)
    message['To'] = Header(receiver,coding)
    message['subject'] = Header(title, coding)
    try:
        mail_client = smtplib.SMTP_SSL(host, 465)
        mail_client.connect(host)
        mail_client.login(user, passwd)
        mail_client.sendmail(sender, receiver, message.as_string())
        mail_client.close()
        print('邮件已成功发送给:' + receiver)
    except:
        print('发送失败!')

def get_webInfo(url):
    req=urllib.request.Request(url)
    rsp=urllib.request.urlopen(req,context=context)
    html=rsp.read().decode('utf-8','ignore')
    html=BeautifulSoup(html,'html.parser')
    for link in html.find_all('a',limit=62):
        info_link=link.get('href')
        info_text=link.get_text(strip=True)
    info = [info_text,info_link]
    return info

def get_webContext(url):
    req=urllib.request.Request(url)
    rsp=urllib.request.urlopen(req,context=context)
    html=rsp.read().decode('utf-8','ignore')
    html=BeautifulSoup(html,'html.parser')
    pTitle = ''
    pText = ''
    for x in html.find_all('h3'):
        print(x.get_text())
        pTitle += x.get_text()
    for y in html.find_all('p'):
        pText += y.get_text() +'\n'
    print(pText)
    res = [pTitle,pText]
    return res

def check():
        history = tmp['history']
        result = get_webInfo(url)
        info_text = result[0]
        info_link = result[1]
        if history == info_text:
            print(' ')
        else:
            print('发现更新')
            linkUrl = '链接'+ info_link
            ans = get_webContext(linkUrl)
            title = ans[0]
            article = ans[1]
            receiver = '接收的邮箱'
            send_mail(title, article, receiver)

if __name__ == '__main__':
    while(1):
        time.sleep(60*60*2)
        check()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值