python结合API实现即时天气信息
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
import urllib.request import urllib.parse import json """ 利用“最美天气”抓取即时天气情况 http://www.zuimeitianqi.com/ """ class ZuiMei(): def __init__( self ): self .url = 'http://www.zuimeitianqi.com/zuimei/queryWeather' self .headers = {} self .headers[ 'User-Agent' ] = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.80 Safari/537.36' # 部分城市的id信息 self .cities = {} self .cities[ '成都' ] = '01012703' self .cities[ '杭州' ] = '01013401' self .cities[ '深圳' ] = '01010715' self .cities[ '广州' ] = '01010704' self .cities[ '上海' ] = '01012601' self .cities[ '北京' ] = '01010101' # Form Data self .data = {} self .city = '北京' def query( self ,city = '北京' ): if city not in self .cities: print ( '暂时不支持当前城市' ) return self .city = city data = urllib.parse.urlencode({ 'cityCode' : self .cities[ self .city]}).encode( 'utf-8' ) req = urllib.request.Request( self .url,data, self .headers) response = urllib.request.urlopen(req) html = response.read().decode( 'utf-8' ) # 解析json数据并打印结果 self .json_parse(html) def json_parse( self ,html): target = json.loads(html) high_temp = target[ 'data' ][ 0 ][ 'actual' ][ 'high' ] low_temp = target[ 'data' ][ 0 ][ 'actual' ][ 'low' ] current_temp = target[ 'data' ][ 0 ][ 'actual' ][ 'tmp' ] today_wea = target[ 'data' ][ 0 ][ 'actual' ][ 'wea' ] air_desc = target[ 'data' ][ 0 ][ 'actual' ][ 'desc' ] # 上海 6~-2°C 现在温度 1°C 湿度:53 空气质量不好,注意防霾。 print ( '%s: %s~%s°C 现在温度 %s°C 湿度:%s %s' % ( self .city,high_temp,low_temp,current_temp,today_wea,air_desc)) if __name__ = = '__main__' : zuimei = ZuiMei() zuimei.query( '广州' ) |
效果演示: