1 # -*- coding: utf-8 -*-
2
3 import urllib.request
4
5 import json
6 import gzip
7
8 cityname = input('请输入你想查询的城市:\n')
9
10 # 访问的url,其中urllib.parse.quote是将城市名转换为url的组件
11 url = 'http://wthrcdn.etouch.cn/weather_mini?city=' + urllib.parse.quote(cityname)
12
13 # 发出请求并读取到weather_data
14 weather_data = urllib.request.urlopen(url).read()
15
16 # 以utf-8的编码方式解压数据
17 weather_data = gzip.decompress(weather_data).decode('utf-8')
18
19 # 将json数据转化为dict数据
20 weather_dict = json.loads(weather_data)
21
22 if weather_dict.get('desc') == 'invilad-citykey':
23 print("输入的城市名错误")
24
25 elif weather_dict.get('desc') == 'OK':
26 forecast = weather_dict.get('data').get('forecast')
27
28 startoday = '城市:' + weather_dict.get('data').get('city') + '\n' \
29 + '日期:' + forecast[0].get('date') + '\n' \
30 + '温度:' + weather_dict.get('data').get('wendu') + '℃\n' \
31 + '高温:' + forecast[0].get('high') + '℃\n' \
32 + '低温: ' + forecast[0].get('low') + '℃\n' \
33 + '风向:' + forecast[0].get('fengxiang') + '\n' \
34 + '风力:' + forecast[0].get('fengli') + '\n' \
35 + '天气:' + forecast[0].get('type') + '\n' \
36 + '感冒:' + weather_dict.get('data').get('ganmao') + '\n'
37
38 one_day = '日期:' + forecast[1].get('date') + '\n' \
39 + '天气:' + forecast[1].get('type') + '\n' \
40 + '高温:' + forecast[1].get('high') + '\n' \
41 + '低温:' + forecast[1].get('low') + '\n' \
42 + '风向:' + forecast[1].get('fengxiang') + '\n' \
43 + '风力:' + forecast[1].get('fengli') + '\n'
44
45 two_day = '日期:' + forecast[2].get('date') + '\n' \
46 + '天气:' + forecast[2].get('type') + '\n' \
47 + '高温:' + forecast[2].get('high') + '\n' \
48 + '低温:' + forecast[2].get('low') + '\n' \
49 + '风向:' + forecast[2].get('fengxiang') + '\n' \
50 + '风力:' + forecast[2].get('fengli') + '\n'
51
52 three_day = '日期:' + forecast[3].get('date') + '\n' \
53 + '天气:' + forecast[3].get('type') + '\n' \
54 + '高温:' + forecast[3].get('high') + '\n' \
55 + '低温:' + forecast[3].get('low') + '\n' \
56 + '风向:' + forecast[3].get('fengxiang') + '\n' \
57 + '风力:' + forecast[3].get('fengli') + '\n'
58
59 four_day = '日期:' + forecast[4].get('date') + '\n' \
60 + '天气:' + forecast[4].get('type') + '\n' \
61 + '高温:' + forecast[4].get('high') + '\n' \
62 + '低温:' + forecast[4].get('low') + '\n' \
63 + '风向:' + forecast[4].get('fengxiang') + '\n' \
64 + '风力:' + forecast[4].get('fengli') + '\n'
65
66 print(one_day)
67 print(two_day)
68 print(three_day)
69 print(four_day)