python+beautifulsoup+smtp爬取学院网站的信息公告+邮件发送

news/2024/5/9 19:57:53/文章来源:https://blog.csdn.net/u011964923/article/details/53714250

最近学习了利用python爬虫,甚是有趣。所以写了个试用的小程序分享出来。

学院的相关通知都会放在网站的信息公告上,但每天打开电脑->打开浏览器->打开学院网站,就为了看个信息公告,挺麻烦还容易忘记。但害怕错过重要通知,又不得不看。


所以,我就想,能不能让我的云服务器自动爬取学院网站的信息公告,把信息公告做HTML格式的e-mail,然后每天早上9点钟定时自动给我发一封邮件呢。在这封邮件里面,我可以看到最近发布的通知,点击通知能够直接链接到通知详情页面。


说干就干,代码其实也就几十行而已。


首先介绍下代码中用到的一些python库:

from bs4 import BeautifulSoup
import requests
import codecs
import smtplib
from email.mime.text import MIMEText
import time

其中,BeautifulSoup是爬虫库,用来解析HTML网页;requests库用于向学校网站发送请求,GET下来网页;codecs是个编码库,可以用'utf-8'编码格式打开文件;stmplib是发送邮件用的;time用于定时。

【步骤1】锁定信息公告在HTML的位置

class GrabNews():def __init__(self):self.NewsList = []def getNews(self):url = 'http://eis.whu.edu.cn/index.shtml'r = requests.get(url)soup = BeautifulSoup(r.text, "html.parser")newsTitle = soup.find(text="信息公开")newsList = newsTitle.parent.next_sibling.next_sibling.find_all('a')for news in newsList:for string in news.stripped_strings:newsUrl = 'http://eis.whu.edu.cn/' + news['href']self.NewsList.append({string:newsUrl})

首先,我们要在浏览器中打开学院含有信息公告的网页,按F12去看信息公告到底在HTML文件的什么位置。 通过Beautifulsoup可以很轻松定位到信息公告。

【步骤2】拿到通知的标题和链接,写入HTML本地文件中

def getNews():grabNews = GrabNews()grabNews.getNews()fp = codecs.open('news.html', 'w', 'utf-8')for news in grabNews.NewsList:for key in news.keys(): # key:value. key是新闻标题,value是新闻链接#fp.write(key+'\n')#fp.write(news[key]+'\n')fp.write('<a href=%s>%s</a>' % (news[key], '*'+key))fp.write('<hr />')fp.close()
这里面实例化了一个GrabNews类,从这个类中可以获取通知的标题和链接,存放在“news.html”中。每个通知做成链接形式,用水平线<hr />隔开。

【3】发送HTML格式的邮件

def sendNews():# 第三方 SMTP 服务mail_host = 'smtp.sina.com'  # SMTP服务器mail_user = 'your_username@sina.com'  # 用户名mail_pass = 'your_password'# 收发方地址sender = 'your_username@sina.com'  # 发件人邮箱receivers = ['reciver_username@qq.com']  # 接收邮件# 从HTML文件中读取发送邮件的内容fp = open('news.html')message = MIMEText(fp.read(), 'html', 'utf-8')  #内容, 格式, 编码fp.close()# 补全消息头部信息message['Subject'] = '电信院信息公告'message['From'] = "{}".format(sender)message['To'] = ",".join(receivers)try:smtpObj = smtplib.SMTP(mail_host, 25)  # SMTP协议默认端口是25smtpObj.login(mail_user, mail_pass)  # 登录验证smtpObj.sendmail(sender, receivers, message.as_string())  # 发送print('mail has been send successfully.')except smtplib.SMTPException as e:print(e)	
我这里是通过SMTP协议,从我的新浪邮箱,发送到我的qq邮箱。 注意需要先登录,再发送,消息头部信息‘Subject', 'From', 'To'不要忘记。 这里需要注意的是,如果你填写的邮箱用户名和密码都是正确的,但发现登录失败。 那么最大的可能,就是你的邮箱为开通SMTP服务,这是后你可以通过浏览器登录邮箱,在“设置”中开启SMTP服务,这时候你会得到一个授权码。再返回代码中,将邮箱密码替换为授权码即可成功登录。

【4】程序入口,定时发送

if __name__ == '__main__':while(True):if('09:00'==time.strftime('%H:%M')):getNews()sendNews()time.sleep(61)  # 等待一分钟以上else:time.sleep(30)  # 每30秒查询一次系统时间
通过time.strftime获取当前系统时间,每天早上’09:00“准时发送邮件。 这里time.sleep(61)如果去掉的话,你在这一分钟内就会不停地收到同一封邮件。哈哈


上个图:




本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_827830.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python 爬网站上的图片

最近在做bot的动物识别&#xff0c;最后根据大会给出来的测试数据&#xff0c;发现对简笔画的动物识别处于懵圈状态&#xff0c;识别效果很差~故我需要自己爬取一些简笔画的图片~ 手写学习了某一网站的图片爬取&#xff1a; 附上代码&#xff1a; # -*- coding: utf-8 -*-…

ubuntu安装网站服务器,Ubuntu安装服务器

tomcat 的安装安装 Tomcat 需要首先安装配置 JDKJava 的安装在 Ubuntu 和 Linux Mint 上安装 Oracle JDK使用下面的命令安装&#xff0c;只需一些时间&#xff0c;它就会下载许多的文件&#xff0c;所及你要确保你的网络环境良好&#xff1a;sudo add-apt-repository ppa:webup…

织梦tag.php删,DedeCMS的TAG标签SEO问题改进及PHP源代码讲解

DEDECMS是最优秀的中文开源CMS系统之一了&#xff0c;不过&#xff0c;DEDE系统也不是尽善尽美的&#xff0c;存在许多待改善的地方&#xff0c;且不说它那基本广受诟病的安全问题&#xff0c;今天跟版网就找其中一个细节说说它的问题&#xff0c;那就是它的tag标签问题。DEDEC…

怎么把整个段落往左移_单页网站怎么做SEO优化与推广

单页网站SEO是一个相对特别的优化工作&#xff0c;它更多的应用于在线商品快速交易行业&#xff0c;单页网站其实往往更多的应用在SEM竞价推广&#xff0c;而不是SEO。SEO单页排名技术&#xff1a;指的是依赖于一个单独的页面&#xff0c;对目标关键词进行优化&#xff0c;通常…

怎么嵌入到网站的html源代码中_怎么用好结构化数据标记,手把手教你做schema markup code...

什么是结构化数据&#xff08;schema markup&#xff09;&#xff1f;Schema Markup&#xff08; https://schema.org/&#xff09;是一种代码形式用来帮助你的网页和搜索引擎进行友好的沟通&#xff0c;告诉搜索引擎更多关于你的信息&#xff0c;比如说有时候我们看到搜索结果…

seo管理php源码_网站建设之常用CMS系统的SEO优化功能分析

大家好&#xff01;我是小熊优化的SEOER&#xff0c;在seo优化这个行业已经从业7年多了&#xff0c;优化过不少的个人和企业网站&#xff0c;根据多年的经验也总结出了不少的优化经验&#xff0c;现在大部分的网站&#xff0c;尤其是单位性质的网站基本都是采用CMS系统来做的&a…

推荐一个学习基础编程技术的网站

推荐一个学习基础编程技术的网站 RUNOOB-菜鸟教程 该网站简介&#xff1a; ----------------------------------------------------------------------------------------------------------------------------------------------------- 关于我们 菜鸟教程提供了最全的基础…

如何免费领取 Pluralsight 等各大学习网站会员?

步骤 首先你需要一个微软账号&#xff0c;如果你没有的话可以去注册一个&#xff0c;点击 注册 。 点击网址 微软 Visual Studio 福利 并登陆你微软账号&#xff0c;这时你会看到下面有很多激活码可以领取。 激活 点击Activate&#xff0c;根据操作步骤,在Pluralsight页面输入…

请检查网站服务器是否正常.,请检查服务器地址是否正确

请检查服务器地址是否正确 内容精选换一换网站的访问与云服务器的网络配置、端口通信、防火墙配置、安全组配置等多个环节相关联。任意一个环节出现问题&#xff0c;都会导致网站无法访问。本节操作介绍网站无法访问时的排查思路。网站无法访问怎么办&#xff1f;如果打开网站有…

实现WorkPress网站文章代码高亮显示

首先需要在WorkPress中下载WP Githuber MD&#xff0c;下载方法如下&#xff1a;插件—>安装插件—>右上角搜索框输入WP Githuber MD—>下载该插件。 有了插件后&#xff0c;在插件—>已安装插件中找到WP Githuber MD—>设置WP Githuber MD的属性。选中模组&am…

CTF_Crypto_MD5【BUUCTF网站题库】

题目 MD5 解压 解题 工具 MD5 解码工具 https://www.somd5.com/ 答案 最后 在flag输入 flag{admin1} 成功&#xff01;&#xff01;&#xff01; 小结 MD5简介 MD5是一种常见的加密方式&#xff0c;但准确来说&#xff0c;它只是一种编码方式&#xff0c;它将任意有限…

CTF_Crypto_Url编码[BUUCTF网站]

题目 Url编码 由此可以看出是url编码和解码操作 即 encode and decode 题目 具体的url编码后的格式 解题 url编码–拓展 浏览器打包表单输入的格式 url编码是一种浏览器用来打包表单输入的格式。浏览器从表单中获取所有的name和其中的值 &#xff0c;将它们以name/value…

【Ubuntu】}Ubuntu镜像网站

Ubuntu镜像下载 镜像下载 阿里云镜像站-aliyun mirrors 镜像网址&#xff1a; ** 浙江大学&#xff1b;&#xff08;易进&#xff09;xjtU(西安交通大学)华为云tsinghua&#xff08;清华大学&#xff09;Beijing University of Posts and Telecommunications(北邮大)&#x…

程序员必备网站和工具

程序员必备网站和工具 思维工具&#xff1a;XmindPPT模板&#xff1a;办公资源、站长素材、笨鸟网、PPTStone、六图网、欧酷PPT招聘软件&#xff1a;前程无忧、智联招聘、BOSS直聘Maven仓库&#xff1a;https://mvnrepository.com/清华大学开源软件镜像站&#xff1a;https://…

HttpClient4登陆有验证码的网站

其实就这个问题,本来是很简单的,我自己花了近两个下午才搞定,现在记录一下。也希望能帮助后来的朋友。先说httpclient 操蛋的httpclent!为什么说操蛋呢,因为从httpclient3到httpclient4,有很大的变化,而且我自己水平也不够,在jar包上出了很多问题(例如我不知道还有个httpcore…

大型网站技术架构 读书笔记4 高可用架构

说句掏心窝的话,高可用甚至比高性能更重要。为什么? 因为你把系统的性能优化10倍,你的老板可能会说:小董呀,干的不错。 可是,如果你负责的模块,三天两头就宕掉了,嘿嘿,你懂得。 可用性度量 99%-----网站年度不可用时间小于88个小时 99.9%---网站年度不可用时间小于9个小时 99.…

大型网站技术架构 读书笔记3 高性能架构

很明显,这一章是说性能优化的,那么在说性能之前,我们得先了解性能的具体定义,也就是说如何评定一个系统性能是好还是不好。因此,我们就先说说性能测试,然后分别是前端性能,应用服务器的性能以及存储性能的优化。性能测试 1 不同的人对性能的认识是不一样的对用户来说,他们认为的…

大型网站技术架构 读书笔记2 大型网站核心架构要素

通常情况下,一个网站的架构出来功能性需求外,还应该考量以下五个方面:性能可用性伸缩性扩展性安全性性能 性能的官方解释,我就不说了。对用户来说,就是系统的反应速度是否快。对网站来说,性能问题是无处不在的,继而,我们优化性能的手段也有很多。我们从前到后一个一个来说在浏览…

大型网站技术架构 读书笔记1 大型网站架构模式

架构&#xff0c;又名软件架构&#xff0c;是有关软件整体结构与组件的抽象描述&#xff0c;用于指导大型软件系统各个方面的设计。 关于什么是模式&#xff0c;这个来自建筑学的词汇是这样定义的&#xff1a;“每一个模式描述了一个在我们周围不断重复发生的问题及该问题解决方…

大型网站架构之大型网站的演变过程

大型网站的演变过程 现在网站面临的问题&#xff1a; 1.企业在网站技术上的进行了大量的投入&#xff0c;但总是在关键的时刻频繁宕机&#xff08;高性能&#xff09;&#xff1b; 2.工程师夜以继日的加班工作&#xff0c;网站缺总是故障频繁、新功能上线缓慢&#xff08;扩展…