查询天气数据Python模块接口

Zss 发表于:

使用Python编写一个返回城市天气的数据模块接口,传参为城市名,返回近三日的天气预报情况

主要是为了之后使用wxpy来写一个简单的robot机器人,提供查询天气,查询星座,等等一些查询的操作

以后如果有使用到天气的查询就可以直接使用了,将其返回的json值重新格式化了,返回的是列表,三个元素分别为今明后三天的天气情况

使用的api接口是https://www.sojson.com/open/api/weather/json.shtml?city=城市名,网上随便找的一个免费的天气api接口

这阵子天气不怎么样呀。。。总是下雨。。

深圳天气
日期:2018年08月12日星期日
天气类型:大雨
温度:26
温度范围:26.0℃-29.0℃
风向:无持续风向
风力:<3级
建议:出门最好穿雨衣,勿挡视线,各类人群可自由活动

深圳天气
日期:2018年08月13日星期一
天气类型:阵雨
温度:26
温度范围:27.0℃-31.0℃
风向:无持续风向
风力:<3级
建议:阵雨来袭,出门记得带伞,各类人群可自由活动

深圳天气
日期:2018年08月14日星期二
天气类型:阵雨
温度:26
温度范围:27.0℃-32.0℃
风向:无持续风向
风力:<3级
建议:阵雨来袭,出门记得带伞,各类人群可自由活动

 

#coding:utf-8
import requests,sys,json,time
reload(sys)
sys.setdefaultencoding('utf-8')

class Weather():
    def __init__(self):
        pass

    def get_weather_info(self,city):
        """
        传入城市参数,返回今天,明天,后天的天气,返回类型为列表
        """
        weather_info = []
        url = 'https://www.sojson.com/open/api/weather/json.shtml?city=%s'%city
        rsp = requests.get(url=url).content
        data = json.loads(rsp)
        for i in range(0,3):
            fengxiang_info = data["data"]["forecast"][i]['fx']
            fengli_info = data["data"]["forecast"][i]['fl']
            high_info = data["data"]["forecast"][i]['high'].split(' ')[1]
            type_info = data["data"]["forecast"][i]['type']
            date_info = data["data"]["forecast"][i]['date']
            low_info = data["data"]["forecast"][i]['low'].split(' ')[1]
            current_info = data["data"]["wendu"]
            notice_info = data["data"]["forecast"][i]['notice'] + ','+ data["data"]["ganmao"]
            date = time.strftime("%Y年%m月",time.gmtime(time.time())) + date_info
            info = '%s天气'%city + '\n'+ '日期:%s'%date + '\n'+ '天气类型:%s'%type_info +'\n'+ '温度:%s'%current_info + '\n' + '温度范围:%s-%s'%(low_info,high_info) + '\n' +'风向:%s'%fengxiang_info + '\n' + '风力:%s'%fengli_info + '\n' + '建议:%s'%notice_info
            weather_info.append(info)
            print(info)
        return weather_info

if __name__ == '__main__':
    weather = Weather()
    weather.get_weather_info('深圳')