当前位置: 首页 > 后端技术 > Python

蹲坑高手的自我修养

时间:2023-03-26 18:24:11 Python

随着课程的结束,临近期末考试。作为一名“资深填鸭”,在了解了准确的考试安排后,及时准备预习,让自己在deadline的压力下,爆发出惊人的力量,增强学习能力!期末考试通知第一时间发布在培训处网站上,即网站是获取考试信息最快的途径。由于频繁手动访问这个网站会引起我自己的焦虑和浪费宝贵的时间,所以我决定使用我的好帮手“网络爬虫”来帮助我自动化监控网站,当培训办公室的网站发布通知时考试安排,我会第一时间通知你对我来说,通知的形式是通过邮件发送的,也就是推送到我经常用的手机上。爬取页面,观察网页结构,发现通知全部发布在通知页面,非常符合正常逻辑,即最新的通知会出现在第一位。那么我们只需要实时抓取页面最新最先的内容就可以完成目标了。根据以往对考试通知单形式的观察,发现所有的考试通知单上都有“考试通知单”字样,打开链接会下载一个xlsx文件,里面有时间等一系列必要的信息和考试地点。我们使用lxml解析网页,使用xpath提取关键信息,一个是通知的标题,一个是通知的内容(xlsx文件),通过下载通知的href链接得到。为了在通知发布后尽快获取消息,不至于访问网站太频繁造成不必要的麻烦,我们采用了程序每十分钟执行一次的策略,这也是一种权衡。这里使用第三方库apscheduler,任务每十分钟执行一次,而misfire_grace_time是允许的错误延迟。当任务连续执行多次时,会产生一定的延迟,导致下一个任务无法执行。邮件推送当爬虫检测到培训处有最新的考试信息时,会自动下载xlsx文件到本地,并以邮件附件的形式发送到我自己的邮箱,以便我收到第一张考试随时随地在我的手机上查看信息。手信息。需要注意的是这里的passwd不是自己QQ邮箱的密码,而是开通QQ邮箱的POP3/SMTP服务后得到的授权码。至此,我们的爬虫脚本就已经完成了。分为三个主要部分:爬虫抓取网页、程序定时运行、邮件发送。然后我们就可以愉快地“无所事事”,直到收到自己发来的“死亡邮件”~