python自动读取邮件_python定时获取天气数据并自动发送到邮箱

上篇文章自动发送邮件,python几行代码来搞定!我们说到如何用python来实现自动发送邮件。这篇文章我们就来谈谈如何获取天气数据,并定时将天气数据发送到指定的邮箱中?

71cf3bc79f3df8dc63cc0a49e4cc458d4510285c.jpeg?token=9968754f51162a59e73e509a49912e97&s=639DE7260F4776470AD752640300406F太阳

天气的获取分为两种:

一种是通过免费的api接口,这有次数限制,一般每天调用1000次,但对于个人使用是完全够的。另一种是通过python爬取相关天气预报网页的内容,从里面提取相关的信息。由于之前没有给大家介绍过相关爬虫的知识,所以这里采用第一种方法。以后再陆续介绍爬虫怎么去获取天气预报信息。

1.Requests库

这里我们用到一个新的库--requests,它是一个http库,简单来说就是用来向服务器发起请求的库。它在python内置模块的基础上进行了高度的封装,从而使得python进行网络请求时,变得人性化,使用Requests可以轻而易举地完成浏览器可有的任何操作。

使用它最重要的一个方法就是get方法,它能获取到所请求页面的html信息。

bf096b63f6246b60b2e7acc1c3252d4a530fa2f9.jpeg?token=88e8a80dab372dd6148e731fd413fa21&s=4908CD1AC536CC234E5DE1D6020080B1例子

请求某个页面详细的html信息,就可以按照图片上的代码这么写,输出的就是html信息。爬虫就是在这个基础上,根据某些规则提取html中的特定信息。

2.获取天气信息

这里采用api接口的方式获取。免费的天气api网上比较多,随便注册一个就好,然后获得你自己应用的key,我这里以和风天气为例。

1.获取某地实时的天气信息

0dd7912397dda14478316bba9c6ae7a40df486e5.jpeg?token=0d18ada20835a80316536a6137765c13&s=6592ED32DD7C4C010E69F0D60000D0B2获取北京天气

在url中?之前的是接口地址,location写要查询地址名称的拼音,后面的key为自己在平台上注册申请的key值。然后用request库进行请求。

d058ccbf6c81800a1a9ef5f599e804fc838b4730.jpeg?token=307bdd3db2f559ed3d12184acccd4428&s=D900ED1A8BC8614118D881DA0200C0B2返回信息

返回来的信息如图所示,就是一个json字符串,里面包含北京经纬度,各种天气情况等信息。接下来再用json对其进行解析,提取表示天气好坏的字段,比如cond_txt

2.获取某地预测天气信息

获取预测的天气预报和获取实时信息方法一样,只不过请求访问的接口变了。这里利用json对数据进行解析,然后遍历出预测天数的天气情况。

1f178a82b9014a905fa38f5781aa0e14b11bee9b.jpeg?token=5138da315eccdd9de53cfdf178e87632&s=6892ED1A191C48C84A5520DA0000C0B2代码及输出结果

只提取里面的date,cond_txt_d,tmp_max,tmp_min,sr,ss等字段的值,并输出。然后可以看到输出预测北京三天的天气情况。

3.发送到邮箱

拿到天气信息后,接下来就是利用smtplib库将信息发送到邮箱,这个库在上一篇文章中已经介绍过,这里我们直接拿来使。

203fb80e7bec54e7d280147393e5ac564ec26a56.jpeg?token=6110b15cf3c77680fcc5917ae6b09cf9&s=4190EC32199AC8C85065ADDA000090B3代码

这里将获取的天气信息封装成一个字符串message,然后声明一个简单MIMEText对象(不带附件),建立SMTP连接发送邮件。

8435e5dde71190efca6bc966e7c6aa10fffa60de.jpeg?token=052429799586019baf4030ff767b32a6&s=C900CD181B7864014AE104D80000C0B3效果

结果如图所示,这样天气信息就出现在你的邮箱中。

4.解决定时发送问题

在前三步解决了点击程序就获取一次天气信息并发送邮件的功能,那怎么让程序一直运行,并在规定时间发送邮件呢?

在这里我们用到apscheduler库,它提供了专用的调度器和调度服务的基础模块。简单说它就是可以实现 windows 计划任务程序等类似的功能。

还是以例子来说明:

34fae6cd7b899e51e3a49715687aee35c9950de8.jpeg?token=d66d352ef4544449ec014a45f6f973da&s=0090EC3215D845C84EDCF5DA000080B1定时输出

这段代码实现的功能非常简单,就是隔3秒就输出当前时间。函数tick就是我们每3秒要执行的方法。这里用BlockingScheduler调度器来生成一个调度器对象,并将要执行的函数tick与间隔执行时间添加到调度器对象当中。

回归到我们主题上来,按照刚刚这个例子,我们只需将tick函数替换为我们自己的发送邮件的函数即可,并根据自己的需求设置时间。

2f738bd4b31c8701f91cdb780fa2a9290508ffed.jpeg?token=1fca7bc0a850b2d205060ee087269f9d&s=4010CD3AC576FC21106DD0CE020090B2代码

这里send_message就是发送邮件的函数,cron表示执行定时cron任务,day_of_week表示在星期几执行该任务该方法,0-6就是星期一到星期天。hour,minute表示任务在一天中执行的时间,这里设为8:00,也就是每天八点就自动给你发送天气预报邮件。

到这里简单的功能就都实现完成,要是想获取全部代码的小伙伴可以在下方留言!

3bf33a87e950352aaba083657b9eccf4b0118bf9.jpeg?token=c318c2f8c4bf3f2426dec4edb8d7435f&s=4AAC3C62518BC9E91C5591DE000080B1谢谢大家阅读

感兴趣的小伙伴可以关注我,欢迎留言讨论。转载请注明出处(百家号:戏说编程)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值