1. 程式人生 > 其它 >Python實用案例,Python指令碼實現天氣查詢應用,提醒她注意保暖!

Python實用案例,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 + tips

print(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 , QMainWindow
from WeatherWin import Ui_widget
import requests
import json

class 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~詳見個人簡介或者私信獲取完整原始碼。。

往期回顧

Python實現自動監測Github專案並開啟網頁

Python實現檔案自動歸類

Python實現幫你選擇雙色球號碼

Python實現每日更換“必應圖片”為“桌面桌布”

Python實現批量加水印

Python實現破譯zip壓縮包

Python實現批量下載百度圖片