干货分享
引言
最近比较忙,但是我又想关注关注微博知乎发生了什么事,所以写了一个定时发送邮件的程序告诉我当前天气和热搜。
相关文件
相关程序文件:后台回复 “热搜” 获取。
相关模块
bs4:解析网页
urllib:获取网页
requests:获取网页
smtplib:发送邮件
email:构造邮件
random:生成随机数
re:正则匹配文本
实现效果
功能实现
爬取信息
这个程序主要由爬虫部分和自动发邮件部分组成。爬虫部分就是简单的获取—>解析网页的过程,之所以用到了urllib库和requests库是因为这两个爬虫是我之前不同时期分别写的,没去做修改,所以两个库都有。
爬取的网站包括:
天气信息:
https://www.tianqi.com/daqing/
微博热搜:
https://s.weibo.com/top/summary?cate=realtimehot
知乎热搜:
https://www.zhihu.com/billboard
在开发者模式下查看网页,确定一下需要的信息所在位置(这里以微博热搜为例)。
可见每条热搜的全部信息都包含在<tr class>
标签下,而我们需要的文本信息则在标签<td class="td-02">
中,使用bs4
库就可以获取得到热搜的文本信息。
其余几个网站方法类似,不赘述了。
发送邮件
为了实现自动发邮件,需要开启邮箱的STMP服务(一般在设置中打开)。
开启后要获取授权码,作为登录邮箱的密码。
然后找到你使用的邮箱的SMTP服务器的地址,常见的STMP服务器地址如下。
163邮箱:
smtp.163.com SSL端口号:465
126邮箱:
smtp.126.com SSL端口号:25
qq邮箱:
smtp.qq.com SSL端口号:465
准备好需要的信息后,配置一下发件邮箱和接收邮箱。
mail_host = "smtp.163.com" # 这里以163邮箱为例
mail_user = "用户名(邮箱@前的部分)"
mail_pass = "授权码,不是登陆密码"
sender = '你的发送邮箱'
message['From'] = "{}".format(sender)
receivers = ['接收邮箱1','接收邮箱2'] # 接收邮箱可以有若干个
message['To'] = ",".join(receivers)
最后配置一下发送内容和主题,send_string
和title
是调用时传入函数的。
配置好相关信息后,就可以使用smtplib
库发信了。
定时执行
如果需要手动执行程序才能发送邮件的话,这个程序的意义就不大了,所以需要设置一下,实现定时执行这个程序。右击此电脑,打开管理窗口。进入如下界面,创建任务。大多数都是常规设置,按照需要设置就可以了。
但是这部分需要说明一下,框1不需要改变,框2写你的程序的位置,框3写python.exe的位置。
最后
现在主要存在的问题是电脑关机后,程序无法运行,如果打算解决这个问题,可以设置在树莓派上定时运行这个程序,关于在树莓派运行程序的方法,过两天我会另写一篇文章。
如果觉得本文还可以,还请各位点个赞。