Python如何自动获取目标网站最新通知
作者:其实还好啦 发布时间:2021-07-14 18:18:16
不管是一名学生,亦或是一名员工,我们都需要时刻注意学校或公司网站的通知,尽量做到即时获取最新消息。
大部分博客或数据资源网站都会有自己的RSS提示系统,便于将网站的最新信息及时推送给需要的用户,而用户也可以通过RSS阅读器来即时地获取到目标网站的最新内容。
由于学校或公司网站服务对象的特殊性和局限性,一般不会建立自己的RSS系统。
作为优秀的人儿,我们可以建立自己的RSS提示系统。
这里介绍了如何使用Python和常用的计算机小程序来构建一个RSS提示系统,做到定时自动检测目标网站发布的通知,并即时发送提示邮件。
本期文章设计RSS提示系统的主要思路是:
爬取目标网站内容,建立本地已有通知数据库;
模拟smtp服务器,建立邮件发送系统;
解析检测目标网站发布的通知,若有新内容,则更新数据库并发送提示邮件;
制定计划任务实现定时自动执行Python脚本程序。
1.建立通知数据库
这一步的目的是爬取目标网站已经发布的通知的数据,并进行存储,从而建立与该目标网站内容相对应的本地数据库。
考虑到数据库中的数据将是辨别和获取一则新通知的唯一方法,因此所建立的数据库将存储每一条通知的标题、发布日期和访问链接。
第一步使用到的模块有urllib、BeautifulSoup和sqlite3模块。其中,通过urllib模块爬取目标网页html数据;通过BeautifulSoup模块解析网页数据、爬取网页内容;通过sqlite3模块建立目标网站已有通知数据库。
该步主要代码展示如下。
2.建立邮件发送系统
这一步的目的是使用Python标准库模块smtplib来访问网络,创建一个发送电子邮件的功能。
由于我们大部分人的计算机并没有建立自己的邮件服务器,因此需借助第三方服务器来模拟邮件发送。
常用的有谷歌邮件系统、网易邮件系统和QQ邮件系统,如QQ邮件系统的SMTP服务器和端口号分别为smtp.qq.com和465。
该步主要代码展示如下。
在这个示例中,使用了Python标准库中的email模块将电子邮件信息进行了格式化,主要包括邮件的主题与发件人、收件人邮箱昵称和邮件内容等信息。
3.解析检测目标网站通知
前面两步,已经完成了目标网站已有通知数据库和邮件发送系统的建立,第三步要完成的工作,主要由两部分组成。
一是,利用第一步使用的urllib、BeautifulSoup模块解析目标网站内容数据,并与前面建立的数据库进行对比检测。
二是,若检测到目标网站有新的通知,则将新通知数据插入到数据库中,然后,发送提示电子邮件。
该步主要代码展示如下。
在这个示例中,只选取了最新的一条通知发送了电子邮件提示,具体邮件信息可自己设定。
4.制定计划任务
前面三步,已经完成了使用Python获取目标网站最新通知,并发送提示电子邮件的脚本程序。
在这一步,将使用Windows自带的DOS命令框架和任务计划程序去每小时自动运行一次Python脚本,实现自动更新通知的目的。
首先,需要编写一个cmd命令文件,方便在DOS框架下执行Python脚本。
主要代码展示如下:
@echo off # 关闭回显
cd C:\demo # 找到Python脚本文件的路径
python Python.py # 执行Python脚本文件
最后,使用任务计划程序制定一个任务,可设定为每隔一小时自动运行一次cmd命令文件。
来源:https://www.cnblogs.com/python0921/p/13137582.html
猜你喜欢
- 介绍godep是解决包依赖的管理工具,目前最主流的一种,原理是扫描记录版本控制的信息,并在go命令前加壳来做到依赖管理godep 建议在 g
- 在网上查阅资料,发现很少用Python进行高斯函数的三维显示绘图的,原因可能是其图形显示太过怪异,没有MATLAB精细和直观。回顾一下二维高
- 前言我在使用mac安装virtualwrapper的时候遇到了问题,搞了好长时间,才弄好,在这里总结一下分享出来,供遇到相同的问题的朋友使用
- 1**:请求收到,继续处理2**:操作成功收到,分析、接受3**:完成此请求必须进一步处理4**:请求包含一个错误语法或不能完成5**:服务
- MySQL 提供了一个很有意思的Engine:Federated!如果你了解Linux下面的Link的话,就应该很好理解这个Federate
- 递归函数及递归次数受到限制一个函数在内部调用自己,那么这个函数是递归函数。递归会反复使用本身,每递归一次,越接近最终的值。当一个问题可以由许
- Numpy支持大量的维度数组和矩阵运算,对数组运算提供了大量的数学函数库!Numpy比Python列表更具优势,其中一个优势便是速度。在对大
- 一、数据容器:list(列表)列表内的每一个数据,称之为元素以 [] 作为标识列表内每一个元素之间用, 逗号隔开定义语法:[元素1, 元素2
- 使用celery在django项目中实现异步发送短信在项目的目录下创建celery_tasks用于保存celery异步任务。在celery_
- 在python显示图象时,我们用matplotlib模块时会遇到图像色彩失真问题,究竟是什么原因呢,下面就来看看究竟。待显示图像为:impo
- 已解决selenium模块利用performance获取network日志请求,抛出异常selenium.common.exceptions
- 五、过渡转化的使用在《mind hack》一书中,揭示了人脑鲜为人知的工作原理。其中提到了“突然的移动或闪烁会吸引人的注意力,这正是负责视觉
- 公布到网页上的Email经常会被一些工具自动提取,一些非法用户就会利用所提取的Email大肆发送垃圾邮件。这些工具大多都是查找链接中“mai
- python 获取蓝牙设备类型扫描蓝牙设备获取到的信息中,无法判断扫描到的蓝牙设备属于什么类型的设备。扫描蓝牙信息使用的是python 里面
- 前言最近在用python写一个项目,发现一个很恶心的bug,就是同由一个类生成的两个实例之间的数据竟然会相互影响,这让我非常不解。后来联想到
- 核心导出作业的 代码 和 作业备份是相似的 代码如下:alter PROC DumpJob (@job VARCHAR(100)
- 相信认真做过网页设计(Web Design),或者关注过页面设计的同行都对“空格”不陌生。“空格”属于一类细节,很容易被忽略,但又比较影响效
- 介绍psutil能够轻松实现获取系统运行的进程和系统利用率。导入模块import psutils获取系统性能信息CPU信息使用cpu_tim
- 俗话说,“工欲善其事,必先利其器”。对于前端开发工程师来说,基于Firefox丰富的Web开发辅助插件无疑就是最好的利器。下面就与大家分享2
- 本文实例讲述了PHPExcel冻结(锁定)表头的简单实现方法。分享给大家供大家参考,具体如下:PHPExcel是一款功能比较强大的操作微软e