往期回顾
Python实现主动监测Github我的项目并关上网页
Python实现文件主动归类
Python实现帮你抉择双色球号码
Python实现每日更换“必应图片”为“桌面壁纸”
Python实现批量加水印
Python实现破译zip压缩包
Python实现批量下载百度图片
前言
明天咱们就利用Python脚本实现天气查问利用吧。间接开整~
成果预览:
一、获取天气信息
应用python获取天气有两种形式。
1、是通过爬虫的形式获取天气预报网站的HTML页面,而后应用xpath或者bs4解析HTML界面的内容。
2、另一种形式是依据天气预报网站提供的API,间接获取结构化数据,省去了解析HTML页面的步骤。
本例应用的是第二种形式,申请地址为:
http://wthrcdn.etouch.cn/weather_mini?citykey=城市代码
局部城市代码对应:
北京 101010100
天津 101030100
上海 101020100
浏览器返回的天津气温状况如下,该信息其实就是一个JSON字符串,格式化之后的样子如下所示:
{ "data": { "yesterday": { "date": "1日星期五", "high": "低温 17℃", "fx": "东北风", "low": "高温 8℃", "fl": "<![CDATA[<3级]]>", "type": "多云" }, "city": "北京", "forecast": [ { "date": "2日星期六", "high": "低温 14℃", "fengli": "<![CDATA[<3级]]>", "low": "高温 8℃", "fengxiang": "北风", "type": "小雨" }, ], "ganmao": "昼夜温差较大,较易产生感冒,请适当增减衣服。体质较弱的敌人请留神防护。", "wendu": "12" }, "status": 1000, "desc": "OK"}
获取天气的次要代码如下:
# cityCode 替换为具体某一个城市的对应编号# 1、发送申请,获取数据url = f'http://wthrcdn.etouch.cn/weather_mini?citykey={cityCode}'res = requests.get(url)res.encoding = 'utf-8'res_json = res.json()# 2、数据格式化data = res_json['data']city = f"城市:{data['city']}\n" # 字符串格式化的一种形式 f"{}" 通过字典传递值today = data['forecast'][0]date = f"日期:{today['date']}\n" # \n 换行now = f"实时温度:{data['wendu']}度\n"temperature = f"温度:{today['high']} {today['low']}\n"fengxiang = f"风向:{today['fengxiang']}\n"type = f"天气:{today['type']}\n"tips = f"贴士:{data['ganmao']}\n"result = city + date + now + temperature + fengxiang + type + tipsprint(result)
二、界面的实现
1、应用Qt Designer绘制窗口,保留为ui文件
2、把ui文件转为py文件
1、在生成的ui文件目录下,关上cmd
2、输出以下命令(留神替换名称)
pyuic5 -o destination.py source.ui
3、信号与槽函数的连贯
# 1、清空按钮与对应函数连贯clearBtn.clicked.connect(widget.clearResult)# 2、查问按钮与对应函数连贯queryBtn.clicked.connect(widget.queryWeather)
4、调用主窗口类
import sys from PyQt5.QtWidgets import QApplication , QMainWindowfrom WeatherWin import Ui_widgetimport requestsimport jsonclass MainWindow(QMainWindow ): def __init__(self, parent=None): super(MainWindow, self).__init__(parent) self.ui = Ui_widget() self.ui.setupUi(self) # 通过文本框传入想要搜寻的城市名称:天津 cityName = self.ui.weatherComboBox.currentText() # 获取天气局部省略 # 在文本框显示查问后果 self.ui.resultText.setText(result) def clearResult(self): print('* clearResult ') self.ui.resultText.clear() if __name__=="__main__": app = QApplication(sys.argv) win = MainWindow() win.show() sys.exit(app.exec_())
文章到这里就完结了,感激你的观看,Python实用脚本系列,下篇文章分享疾速卡通化人物头像
为了感激读者们,我想把我最近珍藏的一些编程干货分享给大家,回馈每一个读者,心愿能帮到你们。
干货次要有:
① 2000多本Python电子书(支流和经典的书籍应该都有了)
② Python规范库材料(最全中文版)
③ 我的项目源码(四五十个乏味且经典的练手我的项目及源码)
④ Python根底入门、爬虫、web开发、大数据分析方面的视频(适宜小白学习)
⑤ Python学习路线图(辞别不入流的学习)
⑥ 两天的Python爬虫训练营直播权限
All done~详见个人简介或者私信获取残缺源代码。。