Python實用案例,Python腳本實現天氣查詢應用,提醒她注意保暖!
瀏覽:2718 收藏:1
前言
今天我們就利用Python腳本實現天氣查詢應用吧。直接開整~
如果有正在跟我一樣的自學的朋友,需要我本篇的代碼或者其他的Python學習資料可以加衛星小助手:ilove-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~詳見個人簡介或者私信獲取完整源代碼。。
技術鄰APP
工程師必備
工程師必備
- 項目客服
- 培訓客服
- 平臺客服
TOP
1
1




















