python3獲取網頁天氣預報資訊並列印

2021-09-21 07:17:25 字數 3034 閱讀 7523

查到乙個可以提供區域天氣預報的url,說明文件在

打算用python從上面獲取預報資訊,列印下來

**如下:

'''

'''import urllib.request

import time

import ssl

import json

# #weather = ""

time.sleep(3) #此處等待3秒主要是對應網頁提示,三秒內只能訪問一次

url = r""#乙個提供區域天氣預報的url

''' json.dumps()和json.loads()是json格式處理函式(可以這麼理解,json是字串)

(1)json.dumps()函式是將乙個python資料型別列表進行json格式的編碼(可以這麼理解,json.dumps()函式是將字典轉化為字串)

(2)json.loads()函式是將json格式資料轉換為字典(可以這麼理解,json.loads()函式是將字串轉化為字典)

'''res = json.loads(html)

a = json.dumps(res, ensure_ascii=false, indent=4) #將讀取到的內容格式化,這樣就可以看到有縮排、換行的內容

# print(a)

fp = open(r"c:\users\***\documents\weather.txt", "w",encoding='utf-8') #將讀取內容儲存到檔案

fp.write(a) #寫入資料

fp.close() #關閉檔案

res = json.loads(a) #將json轉化為dict

# print(res)

'''通過檢視抓到的**,發現dict中巢狀了dict,所以需要把對應的dict取出來

同樣,forecast中,在list裡巢狀了dict,需要仔細檢視並設定中間變數

'''today = res['data']

yesterday = today['yesterday']

forcast = today['forecast']

tomorrow = forcast[0] #注意看res檔案內容,forecast其實是乙個list,其元素才是dict

print("\n\n")

print("***************今日天氣***************")

print("日期: ",res['date'])

print("城市: ",res['city'])

print("溫度: ",today['wendu'])

print("濕度: ",today['shidu'])

print("pm2.5: ",today['pm25'])

print("空氣質素: ",today['quality'])

print("\n\n")

print("***************昨日天氣***************")

print("日期: ",yesterday['date'])

print("城市: ",res['city'])

print("最高溫度: ",yesterday['high'])

print("最低溫度: ",yesterday['low'])

print("天氣狀況: ",yesterday['type'])

# print("pm2.5: ",today['pm25'])

# print("空氣質素: ",today['quality'])

print("\n\n")

print("***************明日預報***************")

print("日期: ",tomorrow['date'])

print("城市: ",res['city'])

print("最高溫度: ",tomorrow['high'])

print("最低溫度: ",tomorrow['low'])

print("天氣狀況: ",tomorrow['type'])

# print("pm2.5: ",today['pm25'])

# print("空氣質素: ",today['quality'])

'''下面是檔案中的全部內容,主要是分清楚dict和list的層次,設定好中間變數,取出對應元素

, "forecast": [,,

,,]}

}'''

主要思路是:

1,先從url獲取資訊;

2,將資訊格式化,轉換為dict;

3,從dict中取出對應的項

注意網路連線,目標**會識別同一ip的訪問頻率,三秒以內只允許一次

關鍵步驟是,從url獲取資訊後,得到的內容是沒有換行和縮排的,即非格式化資料,所以需要使用json.dumps和json.loads將資料格式化

備註:json.dumps()和json.loads()是json格式處理函式(可以這麼理解,json是字串)

(1)json.dumps()函式是將乙個python資料型別列表進行json格式的編碼(可以這麼理解,json.dumps()函式是將字典轉化為字串

(2)json.loads()函式是將json格式資料轉換為字典(可以這麼理解,json.loads()函式是將字串轉化為字典)

獲取天氣預報

接受查詢的城市 city get city 連線redis redis new redis redis connect 127.0.0.1 6379 選擇redis資料庫 redis select 1 獲取是否已經查詢過 生命週期為半小時 res redis get city 進行判斷 if emp...

python天氣預報

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

android 獲取天氣預報

第一行 中獲取天氣的方法已經不行了,天氣老是不更新。搞了大半天,現在終於搞定了。一。資料 北京通過城市名字獲得天氣資料,json資料 通過城市id獲得天氣資料,json資料 獲得json的資料為 yesterday aqi 86 city 北京 按照道理,接下去應該比較容易了,只需要對json資料解...