网站内容更新的通知( 日常生活网页跟踪器功能的分享,使用到的依旧是强大的python)
优采云 发布时间: 2022-02-11 06:01网站内容更新的通知(
日常生活网页跟踪器功能的分享,使用到的依旧是强大的python)
你有没有在日常生活中遇到过需要上网获取信息却不知道什么时候更新的烦恼?
一些 网站 对用户更友好。如果有任何更新,他们会通过微信、短信、电子邮件或电话通知我们,但他们大多没有,特别是通知您您想要的信息。
在日常生活中,我们都会对熟人和朋友说“有消息及时通知我”。网上有没有这样的工具可以自定义类似的tracker?
今天就跟大家分享一下这样的网页追踪器的作用。仍然使用强大的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 = ""#target 跟踪页面内容 = 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: #如果读取的内容与标题不一致获取到的网站的第一个文章,表示网站更新email() #发送qq邮件 f.seek( 0) f.truncate() print( " 网站有更新,需要通知") f.write(title) #写入最新的title内容,方便下次比较 break#退出循环 else: # 否则表示网站@ > has not been updated print( "网站暂时没有更新\n") time.sleep( 5) #检测网页内容的时间间隔,单位秒(s)old_title = f.read() if old_title !=title: #如果读取的内容与获取到的网站的第一个文章的标题不一致,则表示网站更新了email () #发送qq邮件 f.seek( 0) f.truncate() print( "网站有更新,需要通知") f.write(title) #写最新标题内容方便下次比较 break#退出循环 else: # 否则表示网站没有更新 print("网站暂时没有更新\n") time .sleep( 5) #检测网页内容的时间间隔,单位为秒(s)old_title = f.read() if old_title !=title: #如果读取的内容与获取到的网站的第一个文章的标题不一致,则表示网站更新了email () #发送qq邮件 f.seek( 0) f.truncate() print( "网站有更新,需要通知") f.write(title) #写最新标题内容方便下次比较 break#退出循环 else: # 否则表示网站没有更新 print("网站暂时没有更新\n") time .sleep( 5) #检测网页内容的时间间隔,单位为秒(s)更新邮件() #发送qq邮件 f.seek( 0) f.truncate() print( "网站有更新,需要通知") f.write(title) #Write最新的标题内容,方便下次比较 break#退出循环 else: # 否则表示网站没有更新 print("网站暂时没有更新\n" ) time.sleep( 5) #检测网页内容的时间间隔,单位为秒(s)更新邮件() #发送qq邮件 f.seek( 0) f.truncate() print( "网站有更新,需要通知") f.write(title) #Write最新的标题内容,方便下次比较 break#退出循环 else: # 否则表示网站没有更新 print("网站暂时没有更新\n" ) time.sleep( 5) #检测网页内容的时间间隔,单位为秒(s)sleep( 5) #检测网页内容的时间间隔,单位为秒(s)sleep( 5) #检测网页内容的时间间隔,单位为秒(s)
邮递员
import smtplib from email.mime.text import MIMEText from email.header import Header defemail(): sender = ''#fill in sender pwd = 'XXXX'#login password receivers = [''] #fill in recipient message = MIMEText( "你好,网站有内容更新,请及时查看", "plain", 'utf-8') #三个参数:第一个是文本内容,第二个是纯文本格式,第三个设置utf-8 消息的编码 ['From'] = "XXX" message ['To'] = "XXX" subject = "网站 has content updated" #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("Error: Failed to send mail.Case:%s"%e)
指示:
两个程序保存在同一个文件夹中,邮件程序必须保存为“sendemail.py”,主程序可选。然后运行主程序。
运行结果
程序使用演示:
勇勇军已将以上代码打包,所需合作伙伴wx公众号后台回复“网页跟踪”即可。
可以定制程序的地方
这个程序目前不能做成通用版,因为根据不同的网站,需要更换不同的邮箱:
1、url,要跟踪的网页地址2、title,获取第一个标题的xpath地址文章3、time.sleep(),时间间隔 提取网站信息4、接收和发送电子邮件地址
通过将上述内容更改为您自己的需求来自定义您的个人网络跟踪器。关于代码的具体修改内容,如果大家有时间的话,我会开篇文章详细讲讲。
代码直观、基本且简单。欢迎提出宝贵意见!
你可能还想看看
1、分享|教你做个微信聊天机器人,几行代码
2、看看不一样的微信!