目录
前言
课题背景和意义
实现技术思路
一、Python
二、网络爬虫
三、基于 Python 的天气预测系统
四、系统测试
五、总结
实现效果图样例
最后
前言
📅大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科同学来说是充满挑战。为帮助大家顺利通过和节省时间与精力投入到更重要的就业和考试中去,学长分享优质的选题经验和毕设项目与技术思路。
🚀对毕设有任何疑问都可以问学长哦!
选题指导: https://blog.csdn.net/qq_37340229/article/details/128243277
大家好,这里是海浪学长毕设专题,本次分享的课题是
🎯毕业设计-基于 Python 的天气预测系统
课题背景和意义
天气预测与生产生活的各个领域息息相关,在社会发展中发挥着重要作用。天气预测是指综合使用现代科学技术对某一地区未来一 段时间的温度、湿度、风力、风向、天气状况等进行预测。 在当今社会,天气预测对人们的生产生活有着举足轻重的影 响,与日常出行、农业生产、自然灾害预防等多个领域息息 相关,是现代社会正常运转不可或缺的一个部分。随着气象 数据规模的不断增大,以大数据为代表的自动化、智能化 技术在天气预测中开始发挥重要作用。 Python是一种跨平台的解释型面向对象程序设计语 言,语法简单,可读性强,最初被用于编写自动化脚本,随 着版本的不断更新和语言的不断发展,广泛应用于以人工智 能为代表的应用开发领域。目前,Python 已成为大学教学中 的首选语言,在统计学、人工智能、脚本编写、系统测试等 诸多领域均排名第一。TIOBE2019 年一月发布的排行榜显示, Python 第三次获得 TIOBE 最佳年度语言称号,是获奖次数最 多的编程语言。
实现技术思路
一、Python
Python 的发展历程
Python 的创始人是荷兰人 Guido van Rossum,Python 一 名 取 自 英 国 20 世 纪 70 年 代 首 播 的 电 视 喜 剧《Monty Python’s Flying Circus》。1989 年 圣 诞 节 期 间,Guido van Rossum 在阿姆斯特丹开发了一个新的脚本解释语言,这 就是 Python。
Python 自发布以来,使用率呈线性增长,已经成为和 Java、C、C++ 并列的最受欢迎的程序设计语言之一,且由于 其简洁性、易读性的特点,在科学研究、程序设计语言启蒙 等领域发挥着非常重要的作用。 Python 有 Python2.X 和 Python3.X 两个不同的版本,互 不兼容。Python 2 于 2000 年 10 月 16 日发布,Python 2.7 是其最后一版,于 2020 年 1 月 1 日停止更新。Python 3 于 2008 年 12 月 3 日发布,是 Python 的推荐版本,目前最新版 是 Python 3.8。
Python 的特点
Python 尽可能地减少歧义并采用明确的语法以提高代码 的可读性,同时,减少非必须优化,是一种完全面向对象的 程序设计语言,支持继承、重载、派生,代码复用性较强。 具体来所,Python 具有以下特点:
1、开源
Python 是开放源码软件之一,用户可以自由发布软件的 拷贝,查阅、使用、修改源代码。通过这种方式,每个用户 都可以参与到 Python 的发展之中,做出自己的一份贡献。
2、简单易学
与大多数程序设计语言相比,Python 关键字较少,结构 简单,语法定义明确,学习起来较为容易。
3、可移植性
Python 是一种解释型语言,易于移植,已经被移植到包 括 Windows、Linux、Android 在内的很多平台,在不使用依 赖系统特性的情况下,所有的 Python 程序无需任何修改即可 在上述所有平台运行。
4、库函数丰富
Python 语言自带的标准库功能丰富,能够处理正则表达 式、线程、数据库、电子邮件、图形用户界面等各种工作。此外, Python 是开源软件,除了自带的标准库外,众多开发者还为 Python 编写了大量功能强大的第三方库。
Python 开发环境的搭建
Python 开发可以使用 Python 自带的集成开发环境,也 可以使用诸如 Pycharm 等功能更为强大的开发工具。Python 自带的集成开发环境搭建非常简单,首先从官网 http:// www.python.org 下载对应的 Python 版本,然后执行安装文 件,安装完成后,在程序中运行 Python 下的 IDLE,即可打 开 Python 开发环境。
二、网络爬虫
基本原理
随着信息社会的飞速发展,网络信息容量巨大,对搜索 引擎提出了更高的要求。网络爬虫作为搜索引擎的基础构件 之一,其性能直接影响搜索引擎的表现。网络爬虫又叫网 络蜘蛛、网络机器人,是一种按照指定规则自动抓取网页信 息的计算机程序或者脚本 。 网络爬虫的工作原理如下:从一个称为种子 URLs 的初 始 URLs 集中获取并标记一个 URL,下载该网页,分析该网页 内容,提取该网页中所有的 URLs,并将新的 URLs 加入 URLs 队列。然后,从 URLs 队列中获取另一个未标记的 URL,重复 上述过程,直到所有的 URLs 均被标记或满足所设定的停止标 准。
分类
按照系统结构和运作原理,网络爬虫可以分四类:
1、通用网络爬虫
通用网络爬虫也叫全网爬虫,爬取对象覆盖整个 web, 爬取范围极大,对爬取速度和存储空间要求较高。
2、聚焦网络爬虫
聚焦网络爬虫也叫主题网络爬虫,只爬取与预设主题相 关的页面,用于满足对特定领域信息的获取需求。
3、增量式网络爬虫
增量式网络爬虫只爬取新产生的或者有更新的页面,对 没有变化的页面不进行爬取,能保证爬取的页面尽可能新, 且有效减少爬取时间和存储空间上的浪费。
4、深层网络爬虫
Web 页面分为表层页面和深层页面,表层页面以超链接 可以到达的静态网页为主,深层页面则是无法通过静态链接获取,需要用户提交关键词后才能获取的 web 页面。深层网 络爬虫所研究的就是针对深层页面的网络爬虫技术。
三、基于 Python 的天气预测系统
基于 Python 的网络爬虫技术
在网络爬虫方面,Python 提供了大量功能强大的标准库 和第三库,通过使用这些库,可以较为容易地编写网络爬虫 程序。
1、Urllib
Urllib 是 Python 自带的标准库,提供了一系列操作 URL 的功能,通过操作 URL 实现对网页的爬取,包括四个模块。 其中,urllib.request 是 HTTP 请求模块,用于打开、读取 URL;urllib.parse提供了很多 URL处理方法,如解析、拆分等; urllib.error 是异常处理模块,用于处理爬取过程中出现的 异常;urllib.robotparser用于识别网站的 robots.txt文件, 判断网站是否可以爬取。
2、Requests
Requests 是基于 urllib 编写的采用 apache2 licensed 开源协议的 HTTP 库,与 urllib 相比,requests 在 Python 内置模块的基础上进行了高度封装,代码更加简单。requests 支持 HTTP 连接保持、连接池、cookie 保持会话, 支持文件上传和 URL 国际化,包括 requests.request()、 requests.get()、requests.head()、 requests.post()、 requests.put()、requests.patch() 和 requests.delete() 七个主要方法。
3、Beautifulsoup Beautifulsoup
是 一 个 可 以 从 HTML、XML 文 件 中 提 取 内容的 Python 第三方库,提供了一些简单的函数来处理导 航、搜索等功能,通过解析文档为用户提供需要爬取的内 容。beautifulsoup 能自动转换编码方式,将输入文档转换 为 unicode 编码,输出文档转换为 utf-8 编码,除了支持 Python 标准库中的 HTML 解析器 html.parser 外,还支持一 些第三方解析器,如 html5lib。
系统设计与实现
基于 Python 的天气预测系统包括天气数据获取、天气 数据显示、天气语音播报三个主要模块。 天气数据获取模块根据所输入的城市,基于 Python 网 络爬虫技术从中华万年历天气 api 接口获取对应城市的天气 数据,包括以下三个部分:
1、数据获取
根据所输入的城市名称,利用 Python 的 urllib 库从中华万年历天气 api 接口爬取对应城市的天气数据,核心代码 如下:
url= 'http://wthrcdn.etouch.cn/weather_mini?city='
+urllib.parse.quote(city_ name)
weather_data=ur11ib.request.urlopen(url).read()
2、数据解压
利用 Python 的 gzip 库解压获取到的数据,并编码为 utf-8,核心代码如下:
weather_data = gzip.decompress(weather_data).
decode('utf-8')
3、数据转化
利用 Python 的 json 库将解压后的数据转化成 Python 识别的数据,核心代码如下:
weather_dict = json.loads(weather_data)
天气数据显示模块使用 Python 内置的 GUI 模块 tkinter 生成天气预测系统的图形用户界面,显示对应城市的天气数 据信息,包括日期、天气状况、最高温度、最低温度、风级、 风向等。使用 tkinter 生成图形用户界面的步骤如下:
(1)导入 tkinter 模块;
(2)创建一个用于容纳所有的控件的主窗口;
(3)添加所需控件并设置相应的属性和布局;
(4)将控件与对应事件相关联以便响应触发请求;
(5)调用主循环,等待事件触发并响应。
天气语音播报模块对天气情况进行语音播报,步骤如下:
(1)创建对应城市天气数据信息的语音文本;
(2)利用语音合成模块 aipspeech 生成语音文件;
(3)利用 playsound 模块播放语音文件。
四、系统测试
在基于 Python 的天气预测系统中输入所要查询的城市 名称苏州,即可获取苏州从当前日期开始后续几天的天气数 据信息,如图所示。
五、总结
本文在介绍 Python 和网络爬虫相关概念的基础上,分 析了基于 Python 的网络爬虫技术,并将该技术应用到天气预 测系统中,设计并实现了基于 Python 的天气预测系统,能根 据输入的城市名称显示该城市的天气情况,并支持语音播报。 下一步考虑基于 Python 所提供的强大的数据处理功能实现天 气变化趋势的图形化显示。
实现效果图样例
天气预测系统:
我是海浪学长,创作不易,欢迎点赞、关注、收藏、留言。
毕设帮助,疑难解答,欢迎打扰!