Python通过和风天气获取当地数据

这是为之后EPS8266获取天气信息所做的前置测试,一个简单的小测试

1、注册和风天气,获得个人key

前往https://dev.qweather.com/ 注册成功后,选择应用管理、创建应用、选择免费开发版、选择web API即可获得个人key。

和风.png

2、查看开发文档

得到个人key后,点击开发文档,选择需要获取的信息写代码。但其实请求的URL都有相同处。

请求实时天气需要请求的URL为

  • 商业版https://api.qweather.com/v7/weather/now?[请求参数]
  • 开发版https://devapi.qweather.com/v7/weather/now?[请求参数]

请求3天天气预报需要请求的URL为

  • 商业版https://api.qweather.com/v7/weather/3d?[请求参数]
  • 开发版https://devapi.qweather.com/v7/weather/3d?[请求参数]

由此可见在天气这里,有差别的只有最后面的参数。

上面的URL都需要我们补充请求参数

image-20220909190737643.png

其中必选参数有:
key:就是上文获得的个人key
location:是要获取数据的地区代码
由于我只需要我学校所在地的天气,就单独搜索了江门市的地区代码

https://geoapi.qweather.com/v2/city/lookup?location=jiangmen&key=个人KEY

直接在浏览器搜索就能得到


地区id.png

3、Python编写代码

import requests

myKey = '&key=个人key'      # 和风天气Key
City = 'location=101281101'         # 江门城市代码

url_api_weather = 'https://devapi.qweather.com/v7/weather/now?'     # 实时天气
url_api_3dweather = 'https://devapi.qweather.com/v7/weather/3d?'    # 3天天气
url_api_air = 'https://devapi.qweather.com/v7/air/now?'     # 实时空气质量

除了可以查天气还能查空气质量

def get_now_weather():      # 实时天气
    url = url_api_weather+City+myKey
    print(url)
    return requests.get(url).json()

def get_3day_weather():     # 3天天气
    url = url_api_3dweather+City+myKey
    return requests.get(url).json()

def get_air():      #空气质量
    url = url_api_air+City+myKey
    return requests.get(url).json()

对不同的请求所对应的URL进行拼接

if __name__=='__main__':
    CurrentWeather = get_now_weather()
    ThreeDayWeather = get_3day_weather()
    CurrentAirLevel = get_air()

    # print(CurrentWeather)
    print('广东省', '江门市')
    print('当前温度:', CurrentWeather['now']['temp'], '当前体感温度:', CurrentWeather['now']['feelsLike'], '天气状况:',
          CurrentWeather['now']['text'])
    print('相对湿度:', CurrentWeather['now']['humidity'],'累计降水量:',CurrentWeather['now']['precip'],'空气质量指数:',
          CurrentAirLevel['now']['aqi'])
    print('更新时间:', CurrentWeather['updateTime'])
    print()
    print(ThreeDayWeather['daily'][0]['fxDate']+':'+'温度:', ThreeDayWeather['daily'][0]['tempMin']+'℃~'+
          ThreeDayWeather['daily'][0]['tempMax']+'℃', '天气状况:', ThreeDayWeather['daily'][0]['textDay'])
    print(ThreeDayWeather['daily'][1]['fxDate'] + ':' + '温度:', ThreeDayWeather['daily'][1]['tempMin'] + '℃~' +
          ThreeDayWeather['daily'][1]['tempMax'] + '℃', '天气状况:', ThreeDayWeather['daily'][1]['textDay'])
    print(ThreeDayWeather['daily'][2]['fxDate'] + ':' + '温度:', ThreeDayWeather['daily'][2]['tempMin'] + '℃~' +
          ThreeDayWeather['daily'][2]['tempMax'] + '℃', '天气状况:', ThreeDayWeather['daily'][2]['textDay'])

最后输出结果


结果.png
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容