网站内容更新的通知( 日常生活网页跟踪器功能的分享,使用到的依旧是强大的python)
优采云 发布时间: 2021-11-26 12:18网站内容更新的通知(
日常生活网页跟踪器功能的分享,使用到的依旧是强大的python)
您是否在日常生活中遇到过这样的烦恼,需要在网上获取信息,却不知道信息什么时候更新?
一些 网站 更加用户友好。有更新消息会通过微信、短信、电子邮件或电话通知我们,但大多数还没有,尤其是你想要的信息。
日常生活中,我们都会跟熟人朋友说“有消息通知我”,网上有没有这样的工具可以定制类似的追踪器?
今天,我将与您分享这样一个网络跟踪器的功能。仍然使用强大的python。
需求说明
首先,指定我们需要实现的功能。以我的网站《永恒王者的宝箱》为例。
要求是:跟进网站文章,一旦有文章的更新,通过qq邮箱通知我(请注意:使用qq邮箱的好处是一旦有新邮箱,微信会及时通知的。当然,如果有机会再写一个微信通知,也可以用另一个微信通知来通知。)
解决方案
简述解决思路:1、获取页面网站的源码,提取第一篇文章文章的标题,存入电脑;2、设置每个固定时间(例如1小时),提取网站第一篇文章文章的标题。如果与之前存储的标题不一致,则表示有更新。3、发邮件到qq邮箱通知网站有更新要查看。同时将最新的文章保存到电脑中,以备下次对比。
设计一个网络跟踪程序
有了上面的思路,就轻松搞定了。永恒之王花了大约3个小时调试下面的代码,分为主程序和邮件程序两部分。
主程序
import requests from lxml import etree import time import os from sendemail import email whileTrue: url = ""#目标跟踪网页内容 = requests.get(url).content html = etree.HTML(content) title = html.xpath("/ html/body/section/div[2]/div/article[1]/header/h2/a/@title")[ 0] #获取第一篇文章文章title print( "当前标题为: %s"%title) #屏幕打印第一个文章标题 ifnot os.path.isfile( "E:\\title_temp.txt"): #判断title_temp.txt文件是否存在,如果不存在存在 创建并写入第一个 文章 标题 f = open( "E:\\title_temp.txt", "w") f.write(title) print( "在 E 中记录当前标题:\title_temp.txt , 等待检测") f.close() else: 如果#title_temp.txt 文件存在,提取里面的标题,与得到的标题进行比较,open("E:\\title_temp.txt", "r+") as f: old_title = f.read() if old_title !=title: #如果读取的内容和获取到的网站第一篇文章标题不一致,说明网站更新邮箱() #发送qq邮箱 f.seek( 0) f.truncate() print( "网站更新,需要通知") f.write(title) #写入最新的标题内容,方便下次比较break#退出循环 else: # 否则表示网站有未更新 print( "网站 暂时未更新\n") time.sleep( 5) #检测网页内容的时间间隔,单位为秒(s)read() if old_title !=title: #如果阅读的内容和获取的网站第一篇文章文章标题不一致,说明网站更新email() #发送qq邮箱f .seek( 0) f.truncate() print( "网站更新,需要通知") f.write(title) #写入最新的标题内容,方便下次比较break#退出loop else: # 否则表示网站没有更新 print( "网站暂时没有更新\n") time.sleep( 5) #检测网页内容时间间隔, 秒 (s)read() if old_title !=title: #如果阅读的内容和获取的网站第一篇文章文章标题不一致,说明网站更新email() #发送qq邮箱f .seek( 0) f.truncate() print( "网站更新,需要通知") f.write(title) #写入最新的标题内容,方便下次比较break#退出loop else: # 否则表示网站没有更新 print( "网站暂时没有更新\n") time.sleep( 5) #检测网页内容时间间隔, 秒 (s)需要通知") f.write(title) #写入最新的标题内容,方便下次比较break#退出循环 else: # 否则表示网站没有更新 print( "网站暂时没有更新\n") time.sleep( 5) #检测网页内容的时间间隔,单位为秒(s)需要通知") f.write(title) #写入最新的标题内容,方便下次比较break#退出循环 else: # 否则表示网站没有更新 print( "网站暂时没有更新\n") time.sleep( 5) #检测网页内容的时间间隔,单位为秒(s)
电子邮件程序
import smtplib from email.mime.text import MIMEText from email.header import Header defemail(): sender =''#填写发件人密码='XXXX'#登录密码receivers = [''] #填写收件人信息= MIMEText("您好,网站有内容更新,请及时查看","plain",'utf-8') #三个参数:第一个是文本内容,第二个是plain设置文本格式,第三是设置utf-8消息的编码['From'] = "XXX" message ['To'] = "XXX" subject = "网站有内容更新"#Mail subject message[ "Subject" ] = subject try: # 使用非本地服务器,需要建立 ssl 连接 smtpObj = smtplib.SMTP_SSL( "", 465) #发件箱邮件服务器 smtpObj.login(sender,pwd ) smtpObj。sendmail(sender, receivers,message.as_string()) print("邮件发送成功") 除了 smtplib.SMTPException as e: print("错误:无法发送邮件。案例:%s"%e)
指示:
两个程序存放在同一个文件夹中,邮件程序必须保存为“sendemail.py”。主程序是可选的。然后运行主程序。
操作结果
程序使用演示:
永恒之王已经打包了以上代码,需要的合作伙伴wx公众号后台回复“Web Tracking”。
哪里可以定制程序
这个程序目前还不能做成通用版本,因为根据不同的网站和不同的邮箱,需要改动的地方有:
1、url,即要跟踪的网页地址2、title,即第一个文章title3、time.sleep()的xpath地址,即是间隔 提取一次网站信息4、收发邮件地址
您可以通过将上述内容更改为您需要的内容来自定义私人网络跟踪器。关于代码的具体修改,有时间我再另开文章讲。
代码直观、基本且简单。欢迎您提出宝贵意见!
你可能还想看
1、分享|教你做一个微信机器人和你聊天,几行代码
2、带你看不一样的微信!