用Python+requests爬取天气和热搜信息并使用smtplib+email自动填写信息并发送邮件

干货分享

干货 | Python学习资源整理分享

用Python+requests爬取天气和热搜信息并使用smtplib+email自动填写信息并发送邮件_第1张图片

引言

最近比较忙,但是我又想关注关注微博知乎发生了什么事,所以写了一个定时发送邮件的程序告诉我当前天气和热搜。

相关文件

相关程序文件:后台回复 “热搜” 获取。

相关模块

bs4:解析网页
urllib:获取网页
requests:获取网页
smtplib:发送邮件
email:构造邮件
random:生成随机数
re:正则匹配文本

实现效果

用Python+requests爬取天气和热搜信息并使用smtplib+email自动填写信息并发送邮件_第2张图片

用Python+requests爬取天气和热搜信息并使用smtplib+email自动填写信息并发送邮件_第3张图片

功能实现

爬取信息

这个程序主要由爬虫部分和自动发邮件部分组成。爬虫部分就是简单的获取—>解析网页的过程,之所以用到了urllib库和requests库是因为这两个爬虫是我之前不同时期分别写的,没去做修改,所以两个库都有。

爬取的网站包括:
天气信息:
https://www.tianqi.com/daqing/
微博热搜:
https://s.weibo.com/top/summary?cate=realtimehot
知乎热搜:
https://www.zhihu.com/billboard

在开发者模式下查看网页,确定一下需要的信息所在位置(这里以微博热搜为例)。

用Python+requests爬取天气和热搜信息并使用smtplib+email自动填写信息并发送邮件_第4张图片

可见每条热搜的全部信息都包含在标签下,而我们需要的文本信息则在标签中,使用bs4库就可以获取得到热搜的文本信息。

用Python+requests爬取天气和热搜信息并使用smtplib+email自动填写信息并发送邮件_第5张图片

其余几个网站方法类似,不赘述了。

发送邮件

为了实现自动发邮件,需要开启邮箱的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_stringtitle是调用时传入函数的。

配置好相关信息后,就可以使用smtplib库发信了。
用Python+requests爬取天气和热搜信息并使用smtplib+email自动填写信息并发送邮件_第6张图片

定时执行

如果需要手动执行程序才能发送邮件的话,这个程序的意义就不大了,所以需要设置一下,实现定时执行这个程序。右击此电脑,打开管理窗口。进入如下界面,创建任务。大多数都是常规设置,按照需要设置就可以了。

用Python+requests爬取天气和热搜信息并使用smtplib+email自动填写信息并发送邮件_第7张图片

但是这部分需要说明一下,框1不需要改变,框2写你的程序的位置,框3写python.exe的位置。

用Python+requests爬取天气和热搜信息并使用smtplib+email自动填写信息并发送邮件_第8张图片

最后

现在主要存在的问题是电脑关机后,程序无法运行,如果打算解决这个问题,可以设置在树莓派上定时运行这个程序,关于在树莓派运行程序的方法,过两天我会另写一篇文章。

如果觉得本文还可以,还请各位点个赞。

你可能感兴趣的:(Python笔记,Python脚本)