qq地区采集_Python实现气象天气数据采集与分析「定时邮件+Gif天气演变图」

本文首发地址:
https://yishuihancheng.blog.csdn.net/article/details/103323545

天气预报可以说是我们每个人日常生活中都会接触到并关注的一件事情了,当前的天气预报技术不仅仅基于模式预报,也融入进了人工智能分析预测预报技术,准确度相较于以往还是有了很大的提升了的。今天我想基于气象局公布出来的数据来做一些有意思的工作。

首先就是我们的数据采集工作了,这里的数据采集主要包括两种数据类型的采集,分别介绍如下:

第一种:数值型数据的采集 主要是气象台公布出来的气象数据中各个详细参数的实测和预报的数值型的数据内容  第二种:静态图片数据的采集 主要是气象台绘制出来的风场、气象场、降水等等的分布状况的静态图片数据内容

对于上述两种不同类型的图片,我们想要构建的应用也是不一样的。对于数值型数据来说我们主要想构建一个定时天气邮件提醒的小应用来为指定人群发送指定地区的最新天气数据以及未来的预报数据;对于静态图片数据来说我们主要是想基于时间轴来组合得到近期天气形势演变的gif动图,辅助我们来分析和展示天气的情况。

以今天的天气为例,我们获取到气象局公布的天气情况数据如下:

e1212afa228c3cb4109f9d94b4ca0132.png

每3小时的精细预报内容截图如下所示:

92b9728457374a462d543722b3c44d8e.png

可以看到:未来一段时间里降雨还是不少的哈。。。。

从数据粒度来看,预报是每3小时更新一次的,这就给我们提供了一下邮件发送的间隔时间依据,3小时自动发送一次就好了。接下来我们开始获取相应内容的数据,这里简单先贴出来今日已公布出来的数据内容,如下所示:

1a070c5a3f3c60f6fa0b64ac62df22a4.png
2019-11-30 00:00:002019-11-30 01:29:5358457杭州8.91025.080.01.645.02019-11-30 01:00:002019-11-30 03:10:4258457杭州8.81024.078.01.6340.02019-11-30 02:00:002019-11-30 03:10:4258457杭州8.81024.078.00.5315.02019-11-30 03:00:002019-11-30 05:37:1858457杭州8.71023.079.01.4317.02019-11-30 04:00:002019-11-30 05:37:1858457杭州8.81023.079.00.9315.02019-11-30 05:00:002019-11-30 07:50:0258457杭州8.81023.081.00.002019-11-30 06:00:002019-11-30 07:50:0258457杭州8.81023.080.00.9343.02019-11-30 07:00:002019-11-30 08:19:0058457杭州9.01024.085.01.5227.02019-11-30 08:00:002019-11-30 09:58:5658457杭州9.41024.082.01.9227.02019-11-30 09:00:002019-11-30 10:51:4658457杭州9.71024.079.02.1227.02019-11-30 10:00:002019-11-30 12:02:0858457杭州10.41023.078.02.7244.02019-11-30 11:00:002019-11-30 12:02:0858457杭州10.81022.077.01.5204.02019-11-30 12:00:002019-11-30 13:31:3058457杭州10.91021.078.01.0184.0

这部分内容具体的代码实现可以参考我之前的博文《python实现自动向QQ邮箱发送天气预报邮件》。这里我就不再多进行说明了,如果有数据方面的需要也可以留言反馈。

获取的对应的数据内容后,就可以编写邮件的定时发送模块了,具体的实现如下:

def autoSendEmail(receiver,message): ''' 自动发送邮件通知 receiver:邮件的接受者,如:1111111111@qq.com ''' host='smtp.qq.com' port=25 sender='你的发件邮箱号码'  pwd='你的客户端授权密码' body='

叮咚:

'+message+'

' msg=MIMEText(body,'html',_charset="utf-8") msg['subject']='最新的杭州市天气状况来啦,小祖宗请注意接收!' msg['from']=sender msg['to']=receiver server=smtplib.SMTP(host,port) server.login(sender,pwd) #开始登陆邮箱,并发送邮件 server.sendmail(sender, receiver, msg.as_string()) server.quit() print 'Send Weather Email Sussess!!!'

至此,我们的数据获取与解析工作、QQ邮件自动发送功能都已经完成了,接下来就可以正式实践一下了。结果截图如下所示【图拿的还是之前的结果图,因为今天并没有重新去截图,见谅、见谅。。。。】:

d6b4a58da005e4fec9cf943d98ffc50d.png

如果在邮箱定时邮件发送过程中出现一些问题还是建议你看看我之前的文章《python实现自动向QQ邮箱发送天气预报邮件》【https://yishuihancheng.blog.csdn.net/article/details/89068484】,相信你可以找到对应的解决办法的,如果发送成功了却没有接收到对应的邮件的话,就需要看看是不是被QQ邮箱自动拦截放到垃圾邮箱里面了。

完成了上面第一部分工作后,我们的工作差不多完成了一半了,接下来就需要采集和处理静态图片数据内容了,下面红色方框里面的数据内容是我们的研究目标对象:

6cda0ffe5048430291a2ed8952c0b30d.png

我们以【天气分析】专栏为例,打开下拉框:

f9ac8e05976e7955b1305f02993439e5.png

从官方提供的时间轴来看:是每3个小时更新一下数据,到本文撰写的时候,最新的是今天早上11点的数据,找到了这样规律之后对于我们来说就比较好获取数据了。

接下来我们看一下数据获取的结果:

0d2732c1d37a455da664e3497a75342b.png

基于上述静态图像数据制作gif图像如下所示:

a9cda64a0aa79fd7cc457475257f81ec.gif

由于CSDN单张图片大小【不超过5MB】的限制,这里的gif图像我只使用了最新的4张天气形势数据来制作,主要是为了掩饰效果。

接下来我们来看一下卫星云图的内容:

5b780c65f65758d8df3b6caded4144dd.png

从下拉框里面的更新时间来看,粗略是5分钟更新一张数据,但是我们很明显可以发现这里的更新时间是混乱没有规律的,这就需要我们去判断了,而且,还有一点很重要的因素要注意,这里给出来的时间是按照UTC时间进行标识和计算的而不是我们常说的北京时间,二者是相差8个小时的,这一点可以从左上角的时间水印里面看到。

卫星云图的爬取结果如下所示:

bb58b84306d2d0cddc97736c62f92605.png

同样由于图像大小的限制,这里仅给出来最新的部分卫星云图绘制的gif图像,如下所示:

9917f05f40cc5b7e90cf13550ed87f3a.gif

看着庞大的云团在转动,内心还是很激动的啊!
跟上面两种类型的气象图对比,气温图应该是最色彩斑斓的了,如下所示:

68fa4ca3c4f5e96d63682a1a79dd41d0.png

对于气温气象图的采集流程跟上述两种类型气象图的采集操作是相同的,这里我们从下拉框内容发现,全国气温气象数据的更新是每小时一次,这种比较有规律的数据更新对于数据的定制化采集是比较方便的,需要注意的是这里更新的时间用的依旧是UTC时间,也就是说时间戳显示上面会比我们当前的时间晚8小时,结果如下:

64296eb5405e7a736c44971da3156697.png

基于气温气象图我们制作得到的gif动图效果如下:

88cdeb0d23cf4d41fc9f51d914af16cb.gif

这个有点像小时候看电视里面的气象预报的感觉,全国各个区域里面的气象形势不断地在交错变化,很形象地看出来了气象的演变形式。

接下来我们同样可以制作全国风场、能见度、强天气、土壤水分等相关指标的演变动图,这里的工作流程都是比较相似的就不再一一列举了,这里仅给出来全国风场和能见度的分析结果,个人觉得这两个指标比较有意思,如下所示:

e79a558d7fba80f6c3a3a86c450909db.gif
07bb34e9f2971b528ec3b025b7a0961e.gif

这里的采集代码我后续会同步更新到我的GitHub里面,如果有数据层面的需求也可以留言反馈。后面有时间也会进行陆续的更新,这里给出来静态图像转化为gif图像的操作,具体实现如下:

def gifMaker(picDir='pic/',save_path='a.gif',duration=0.35): ''' 创建gif图像 ''' pic_list=os.listdir(picDir) pic_list.sort() image_list=[picDir+one for one in pic_list] frames=[] for image_name in image_list: frames.append(imageio.imread(image_name)) imageio.mimsave(save_path,frames,'GIF',duration=duration) print('Finished!!!!')

gifMaker是我自己编写的一个简单的gif图像制作器,需要的可以拿去直接使用的,相信里面的三个参数前两个都会直接看懂的吧,最后一个参数duration表示的是不同图片之间的间隔时间。

本文的内容差不多就到这里了,算是一个完整的实践经历吧,明天就是12月了,在周末里面去迎接2019年的最后一个月,然我们一起倒计时迎接2020年吧!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值