基于Python网络爬虫+Tkinter实现城市天气预报数据可视化分析

基于Python网络爬虫+Tkinter实现城市天气预报数据可视化分析

基于Python网络爬虫+Tkinter实现城市天气预报数据可视化分析-创享日记
基于Python网络爬虫+Tkinter实现城市天气预报数据可视化分析
此内容为付费资源,请付费后查看
3
立即购买
您当前未登录!建议登录后购买,可保存购买订单
付费资源

资源概况

购买将获得:完整课程实验报告+源码源文件
其他注意:一经购买,概不退款,不提供指导,每年数量有限,售完为止。

资源介绍(截取部分,完整请购买)

基于Python网络爬虫+Tkinter实现城市天气预报数据可视化分析-创享日记

基于Python网络爬虫+Tkinter实现城市天气预报数据可视化分析-创享日记

摘 要

天气预报是对未来一定时期内天气变化的事先估计和预告,是气象工作为国民经济和国防建设服务的重要手段。气象台通过各种渠道及时准确地公开发布天气预报,特别是灾害性天气预报,在保护人民生命财产,促进经济发展等方面发挥着重要作用。
基于上述天气预报的重要性,本案例利用python网络爬虫技术,爬取中国气象网的气矿信息,将初始的网页数据解码、转换结构等一系列处理操作后,通过tkinter库来进行列表展示,最后将未来五天的预测最高最低气温通过复式折线图进行对比,直观形象的使获取到的数据可视化,由此完成一次完整的python数据处理流程。

第一章 需求分析

(篇幅有限,详见下载)

第二章 设计思路

2.1 工作原理
本案例应用的是通用型网络爬虫,通用网络爬虫是捜索引擎抓取系统(Baidu、Google、Yahoo等)的重要组成部分。主要目的是将互联网上的网页下载到本地,形成一个互联网内容的镜像备份。从互联网中搜集网页,采集信息,这些网页信息用于为搜索引擎建立索引从而提供支持,它决定着整个引擎系统的内容是否丰富,信息是否即时,因此其性能的优劣直接影响着搜索引擎的效果。接下来简述工作原理及流程:
第一步:获取初始的URL。初始的URL地址可以由用户人为地指定,也可以由用户指定的某个或某几个初始爬取网页决定。
第二步:根据初始的URL爬取页面并获得新的URL。获得初始的URL地址之后,首先需要爬取对应URL地址中的网页,爬取了对应的URL地址中的网页后,将网页存储到原始数据库中,并且在爬取网页的同时,发现新的URL地址,同时将已爬取的URL地址存放到一个URL列表中,用于去重及判断爬取的进程。
第三步:将新的URL放到URL队列中。在第二步中,获取了下一个新的URL地址之后,会将新的URL地址放到URL队列中。
第四步:从URL队列中读取新的URL,并依据新的URL爬取网页,同时从新网页中获取新URL,并重复上述的爬取过程。
第五步:满足爬虫系统设置的停止条件时,停止爬取。在编写爬虫的时候,一般会设置相应的停止条件。如果没有设置停止条件,爬虫则会一直爬取下去,一直到无法获取新的URL地址为止,若设置了停止条件,爬虫则会在停止条件满足时停止爬取。
图2-1为通用网络爬虫工作流程图:

基于Python网络爬虫+Tkinter实现城市天气预报数据可视化分析-创享日记

2.2 功能规划
(1)爬取网页数据。对爬虫的网页进行分析,获取URL地址。打开该远程的URL连接,并且向这个连接发出请求,获取响应结果。若成功则进行下一步操作,失败则检查错误,再次发送爬虫请求。
(2)处理原数据。返回的响应response是一个HTTPResposne类型的对象,记录了本次爬虫http访问的响应头和响应体,对初始数据进行按UTF-8进行解码与解压缩,再根据后续所需的格式对数据进行转换。
(3)展示数据。利用tkinter库中的messagebox来显示数据信息框,调用方式为from tkMessageBox import * showinfo(message=“hello”)。将未来几天的天气全部信息如温度、湿度、风向等放置于信息框中,便于浏览。
(4)可视化分析。通过折线图的方式,实现未来五天最高气温与最低气温的对比可视化。以日期为横坐标,气温为纵坐标构造复式折线图,更直观的显示了气温的变化与一天之内的温差,实现数据可视化操作。
下图为主要流程图:

基于Python网络爬虫+Tkinter实现城市天气预报数据可视化分析-创享日记

第三章 详细设计

3.1 数据分析
3.1.1爬虫获取数据
通过urllib.request.urlopen(url).read()得到爬取的网页数据如下:

基于Python网络爬虫+Tkinter实现城市天气预报数据可视化分析-创享日记

urlopen( ) 方法用于打开一个远程的url连接,并且向这个连接发出请求,获取响应结果。返回的结果是一个http响应对象,其中记录了本次http访问的响应头和响应体。通过结果可以发现response是一个HTTPResposne类型的对象,需要进一步处理。

基于Python网络爬虫+Tkinter实现城市天气预报数据可视化分析-创享日记

上图所示的数据是经过gzip.decompress(data).decode(‘utf-8’)语句处理的,其中.decode(“utf-8”)) 是对响应体按照utf-8编码进行解码,而gzip.decompress()则是将被压缩的字符串进行解压,到这一步数据已经是我们所能理解的形式,但为了后续取用,需要进一步将json格式的数据进行转换。

基于Python网络爬虫+Tkinter实现城市天气预报数据可视化分析-创享日记

上图所示数据是经过json.loads()方法,将json数据转换为dict数据。json 是一种数据传输格式,就是一个根据某种约定格式编写的纯字符串,不具备任何数据结构的特征。而dict是一种数据结构,表现形式的规则看上去和 json 类似,但是dict本身是一个完整的数据结构,实现了一切自身该有的算法,可以进行操作。由此完成了对爬虫数据的处理,接下来就用该dict数据来进行可视化操作。

3.1.2 tkinter窗口数据
计划在tkinter窗口中以五个列表的形式展示未来五天的天气情况,而此时的数据以dict的结构存在,需要循环取出所需数据放入列表中,如下所示:

基于Python网络爬虫+Tkinter实现城市天气预报数据可视化分析-创享日记

定义范围为1-5的变量i,通过for循环语句,用get()获取字典值,依次将每天的数据放入列表中,并设置相对应的列表名。此时数据已经是键值对的形式,存放至LANGS列表中,接下来就是从列表中取用放入tkinter框架,如下图所示:

基于Python网络爬虫+Tkinter实现城市天气预报数据可视化分析-创享日记

3.1.3折线图数据
预计通过折线图,实现未来五天最高气温与最低气温的对比可视化。以日期为横坐标,气温为纵坐标构造复式折线图,同上从dict数据中循环取出放入数组。

基于Python网络爬虫+Tkinter实现城市天气预报数据可视化分析-创享日记

上图为横坐标数组,根据日期依次排列,而纵坐标数组在获取时,由于每日气温变化不同,因此在折线图显示上会出现顺序紊乱的现象,用下述方法解决:

基于Python网络爬虫+Tkinter实现城市天气预报数据可视化分析-创享日记

定义high_nums数组,从dict数据中取出的气温是格式为“高温 30℃”的字符串,先通过[3,5]截取出我们所需的气温,再用int()转为整形变量,这样子就获得了我们所需的数据格式,可在纵坐标上从低到高按顺序排列。

3.2 主要代码(篇幅有限,详见下载)

第四章 运行调试与分析讨论

4.1 运行首页

基于Python网络爬虫+Tkinter实现城市天气预报数据可视化分析-创享日记

如上图所示,当运行程序后便会出现首页搜索界面,由label标签,输入框和两个按钮构成,用户可在输入框中输入想要查询的城市,点击确定即可查询。

4.2 tkinter窗口
如果用户输入的城市已被中国天气网录入,则会显示下图页面。最上方的是温馨提示语句,下面四个板块是未来四天的天气预测,包含日期、风向、风级、最高温、最低温和雨况,信息较为详细,可全面揽知天气情况。

基于Python网络爬虫+Tkinter实现城市天气预报数据可视化分析-创享日记

若用户输入的城市不存在,或未被天气网收录,则会转到错误提示页面,用户点击确定或取消,就会返回首页面,重新进行输入。

基于Python网络爬虫+Tkinter实现城市天气预报数据可视化分析-创享日记

4.3 复式折线图
将未来五天的最高气温和最低气温绘制成复式折线图,折线图可以较好的反应数据之间的对比差异,从图中可以看出,未来五天天气在短暂降低后会快速升温,而7月4日是温差最大的一天。可视化的图表有助于更直观的表达对比信息。

基于Python网络爬虫+Tkinter实现城市天气预报数据可视化分析-创享日记

第五章 设计体会与小结

(篇幅有限,详见下载)

© 版权声明
THE END
喜欢就支持一下吧
点赞3 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容