Python 调用和风天气 API 查询各个城市天气

和风天气 API 接口介绍 https://www.heweather.com/

接口地址

# 服务器节点 接口地址
免费 中国 https://free-api.heweather.com/v5/

请求实例

参数 描述 选择 示例值
city 城市名称,city可通过城市中英文名称、ID、IP和经纬度进行查询,经纬度查询格式为:经度,纬度 必选 city=北京,city=beijing,city=CN101010100,city= 60.194.130.1,city=120.343,36.088
key 用户认证key 必选 your key
lang 多语言,可以不使用该参数,默认为中文 可选 详见多语言参数值

https://free-api.heweather.com/v5/weather?city=CN101010100&key=yourkey
和风天气支持多语言,可以使用lang参数在调用数据时设定需要的语言。比如:
https://free-api.heweather.com/v5/weather?city=CN101010100&key=你的key&lang=en

默认国内城市采用简体中文,海外城市采用英文,默认状态不用添加lang参数。

数据返回实例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
{
"HeWeather5": [
{
"alarms": [
{
"level": "蓝色",
"stat": "预警中",
"title": "山东省青岛市气象台发布大风蓝色预警",
"txt": "青岛市气象台2016年08月29日15时24分继续发布大风蓝色预警信号:预计今天下午到明天,我市北风风力海上6到7级阵风9级,陆地4到5阵风7级,请注意防范。",
"type": "大风"
}
],
"aqi": {
"city": {
"aqi": "60",
"co": "0",
"no2": "14",
"o3": "95",
"pm10": "67",
"pm25": "15",
"qlty": "良", //共六个级别,分别:优,良,轻度污染,中度污染,重度污染,严重污染
"so2": "10"
}
},

源程序

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
# !python2
# -*- coding: utf-8 -*-
import urllib2, json
import requests
#调用和风天气的API city可以通过https://cdn.heweather.com/china-city-list.txt城市列表获取
appkey = '2edd11dc019b43b2bd53406f5e255a41'
cityName = raw_input('请输入查询的地名:')
print cityName
value = {'city': cityName,
'key': appkey,
}
url = 'https://free-api.heweather.com/v5/weather'
s = requests.get(url, params=value)
print s.url
url = s.url
# 用urllib2创建一个请求并得到返回结果
req = urllib2.Request(url)
resp = urllib2.urlopen(req).read()
# print resp
# print type(resp)
# 将JSON转化为Python的数据结构
json_data = json.loads(resp)
city_data = json_data['HeWeather5'][0]
hourly_data = json_data['HeWeather5'][0]['hourly_forecast']
daily_data = json_data['HeWeather5'][0]['daily_forecast']
# print json_data
print u'当前时间:' + daily_data[0]['date']
print u'城市:' + city_data['basic']['city']
print u'PM指数:' + city_data['aqi']['city']['pm25']
print u'白天天气:' + daily_data[0]['cond']['txt_d']
print u'夜间天气:' + daily_data[0]['cond']['txt_n']
print u'今天{0}: 气温:{1}°/{2}°'.format(str(daily_data[0]['date']), daily_data[0]['tmp']['min'],
daily_data[0]['tmp']['max'])
print u'未来小时天气:{0} {1}'.format(str(hourly_data[0]['date']).split()[1], hourly_data[0]['cond']['txt'])
print u'未来小时天气:{0} {1}'.format(str(hourly_data[1]['date']).split()[1], hourly_data[1]['cond']['txt'])
print u'未来小时天气:{0} {1}'.format(str(hourly_data[2]['date']).split()[1], hourly_data[2]['cond']['txt'])
print u'未来{0} 天气:{1}°/{2}°'.format(daily_data[1]['date'], daily_data[1]['tmp']['min'], daily_data[1]['tmp']['max'])
print u'未来{0} 天气:{1}°/{2}°'.format(daily_data[2]['date'], daily_data[1]['tmp']['min'], daily_data[2]['tmp']['max'])
print u'穿衣建议:' + json_data['HeWeather5'][0]['suggestion']['drsg']['txt']

运行截图

Chrome插件-JSON-handle