用Python做天氣預報查詢

2021-10-06 22:55:03 字數 3250 閱讀 7421

3.1 問題

編寫乙個display_weather.py指令碼,實現以下功能:

1.執行程式時,螢幕將出現你所在城市各區縣名字

2.使用者指定查詢某區縣,螢幕上將出現該區縣當前的氣溫、濕度、風向、風速等

3.2 步驟

實現此案例需要按照如下步驟進行。

步驟一:找到天氣資訊規律

1.首先我們想要實現的功能是天氣預報,從哪獲取天氣這是乙個問題,在這裡可以使用這個應用程式程式設計介面,101051301是城市的id,可以到檢視,替換後瀏覽器開啟,如圖-6所示,圖示為json格式:

圖-6注意:圖中看不懂的文字是編碼問題

01.[root@ localhost day12]# vim weather.py

02.#!/usr/bin/python #這裡是python的目錄

03.from urllib.request import urlopen

04.import json

05.06.#開啟網頁,使用urllib模組的urlopen函式開啟url,賦值給html

07.html = urlopen('data/sk/101010100.html')

08.#讀html獲取的資料,儲存到data

09.data = html.read()

10.#從data中獲取我們想要的資訊,json.loads()是將json格式資料轉換為字典

11.#(可以理解為json.loads()函式是將字串轉化為字典)

12.print(json.loads(data))

13.#關閉html

14.html.close()

3.執行指令碼結果如下:

01.[root@ localhost day12]# python3 weather.py

02.}

從以上指令碼執行結果中我們可以看到,從**中獲取到的資料是以字典形式顯示,顯示資訊有城市、城市id,溫度、風向等等,根據這種規律,編寫下面**

步驟二:編寫**實現如下功能

1.定義乙個字典,該字典中鍵『0』和『1』對應的值為天氣**中城市對應的id,城市不同id則不同

2.執行程式時,螢幕將出現你所在城市名字

3.當使用者指定查詢某城市(即輸入0或1時)

4.呼叫get_weather函式,函式的實際引數為city_codes字典對應值(即對應的城市id)

開啟天氣網頁,使用urllib模組的urlopen函式開啟url,賦值給html

6.讀html獲取的資料,用json.loads()獲取天氣資訊,獲取到的資訊為字典形式

7.從獲取到的字典資料中提取氣溫、濕度、風向、風速等資訊,儲存在output變數中

8.將output變數作為get_weather函式的返回值,列印在螢幕上

01.[root@ localhost day12]# vim display_weather.py

02.#!/usr/bin/python

03.04.from urllib.request import urlopen

05.import json

06.07.def get_weather(city_code): #定義乙個輸入城市id的函式

08.5.開啟天氣網頁,使用urllib模組的urlopen函式開啟url,賦值給html

09. url = 'data/sk/%s.html' % city_code

10. html = urlopen(url)

11.6.讀html獲取的資料,用json.loads()獲取我們想要的資訊

12.#json.loads()是將json格式資料轉換為字典

13.#(可以理解為json.loads()函式是將字串轉化為字典)

14. data = json.loads(html.read())

15.7.output為返回值,即最終螢幕顯示的資訊

16. output = '風向:%s, 風力: %s, 溫度:%s, 濕度:%s' % (

17.#data獲取到的天氣資訊為字典,該字典中weatherinfo鍵對應的值還是乙個字典,這個字典中『wd』鍵對應的值是風向,『ws』鍵對應的值是風力,'temp'鍵對應的值是溫度,'sd'鍵對應的值是濕度,利用鍵值對關係將相應資料顯示出來即可

18. data['weatherinfo']['wd'],

19. data['weatherinfo']['ws'],

20. data['weatherinfo']['temp'],

21. data['weatherinfo']['sd']

22. )

23. return output

24.25.

26.27.if __name__ == '__main__':

29. city_codes =

30.2.**執行後,螢幕給出的提示資訊

31. prompt = """(0) 北京

32.(1) 台兒莊

33.請選擇(0/1): """

34.3.根據提示資訊,輸入0或1

35. choice = input(prompt)

36.4.呼叫get_weather函式,其實際引數為city_codes字典對應值

37.8.列印呼叫get_weather函式返回值

38. print(get_weather(city_codes[choice]))

步驟三:測試指令碼執行

01.[root@ localhost day12]# python3 display_weather.py

02.(0) 北京

03.(1) 台兒莊

04.請選擇(0/1): 0

05. 風向:南風, 風力: 小於3級, 溫度:27.9, 濕度:28%

06.[root@ localhost day12]# python3 display_weather.py

07.(0) 北京

08.(1) 台兒莊

09.請選擇(0/1): 1

10. 風向:東北風, 風力: 小於3級, 溫度:22.3, 濕度:64%

python天氣預報

1.引入requests import requests def query now 查詢實時天氣 return none query city input 請輸入要查詢的城市名稱 2.準備url位址 url query city 3.發請求,接收資料 response requests.get u...

Flex 天氣預報

效果如下截圖 建立乙個flex專案weather 在weather.mxml中新增乙個httpwebservice如下 result onresult event resultformat e4x 定義乙個onresult函式如下 bindable private var xml xml new x...

天氣預報小偷

首先,進行小偷程式的一些初始化設定,以上 的作用分別是忽略掉所有非致命性錯誤,把小偷程式的執行超時時間設定得很長 這樣不會出現執行超時的錯誤 轉換原來預設的utf 8編碼轉換成gb2312編碼,否則直接用xmlhttp元件呼叫有中文字元的網頁得到的將是亂碼。然後呼叫xmlhttp元件建立乙個物件並進...