Python小工具——通过API获取天气预报

来源:互联网 发布:c语言的位域 编辑:程序博客网 时间:2024/06/05 23:55

Python通过API获取天气预报

    闲来无事,用Python实现了一个小工具,通过实现API来获取当前的天气预报。

获取API的key

    在阿凡达数据上查找天气预报相关的API,注册申请可获得一个key。API有详尽的文档,会返回Json格式的一堆数据,我们解析出来即可。非常简单。话不多说,上代码吧。

实现

#注意:先安装requests。# -*- coding: utf-8 -*-  import requestsclass WeatherReport():    def __init__(self,cityName):        self.Url = 'http://api.avatardata.cn/Weather/Query'        self.AppKey = '23f69de012da4306815193a00eca0230'        self.Value = {'key':self.AppKey, 'cityname':cityName}    def GetContent(self):        content = requests.get(self.Url,params=self.Value)        jsContent = content.json()        return jsContent    def FormartContent(self):        jsContent = self.GetContent()        date = jsContent['result']['realtime']        jsWeather = jsContent['result']['weather'][0]        allContent = {}        allContent['AddressAndTime'] = date['city_name'] + " ** " + jsWeather['date'] + " ** " + jsWeather['nongli'] + u" ** 星期" + jsWeather['week']        allContent['WeatherInfo'] = self.GetWeatherInfo(jsWeather['info'])        jsLife = jsContent['result']['life']        allContent['LifeInfo'] = self.GetLifeInfo(jsLife['info'])        strContent = ""        strContent = strContent + allContent['AddressAndTime']+"\n"        strContent = strContent + "******************************************" + "\n"        strContent = strContent + allContent['WeatherInfo']        strContent = strContent + "******************************************" + "\n"        strContent = strContent + allContent['LifeInfo']        print strContent    def GetLifeInfo(self,info):        iIndex = 0        LifeInfo = {}        for item in info.values():            if (type(item) is not list):                iIndex = iIndex+1                continue            if (0 == iIndex):                LifeInfo['chuanyi'] = u"穿  衣: " + item[1]            if (1 == iIndex):                LifeInfo['kongtiao'] = u"空  调: " + item[1]            if (2 == iIndex):                LifeInfo['yundong'] = u"运  动: " + item[1]            if (3 == iIndex):                LifeInfo['xiche'] = u"紫外线: " + item[1]            if (4 == iIndex):                LifeInfo['wuran'] = u"洗  车: " + item[1]            if (5 == iIndex):                LifeInfo['ziwaixian'] = u"感  冒: " + item[1]            if (6 == iIndex):                LifeInfo['ganmao'] = u"污  染: " + item[1]            iIndex = iIndex +1        strContent = ""        for item in LifeInfo.values():            strContent = strContent + item + "\n"        return strContent    def GetWeatherInfo(self,info):        iIndex = 0        weatherInfo = {}        for item in info.values():            if (type(item) is not list):                iIndex = iIndex + 1                continue            strContent = self.FormartWeatherInfo(item)            if (0 == iIndex):                weatherInfo['dawn'] = strContent            if (1 == iIndex):                weatherInfo['day'] = strContent            if (2 == iIndex):                weatherInfo['night'] = strContent            iIndex = iIndex + 1        strContent = ""        for item in weatherInfo.values():            strContent = strContent + item + "\n"        return strContent    def FormartWeatherInfo(self,contents):        iIndex = 0        strContent = ""        listContent = []        for item in contents:            if (0 == iIndex):                iIndex = iIndex + 1                continue            if (1 == iIndex):                strContent = u"当前天气:"            if (2 == iIndex):                strContent = u"当前温度: "            if (3 == iIndex):                strContent = u"当前风向: "            if (4 == iIndex):                strContent = u"风力等级: "            if (5 == iIndex):                strContent = u"刷新时间: "            if (6 == iIndex):                strContent = u"温馨提示: "            strContent = strContent + contents[iIndex]            iIndex = iIndex + 1            listContent.append(strContent)        strContent = ""        for iter in listContent:            strContent = strContent + iter + "\n"        return strContentweatherObj = WeatherReport("西安")        weatherObj.FormartContent()

输出

西安 * 2017-08-18 * 闰六月廿七 ** 星期五


当前天气:多云
当前温度: 33
当前风向: 东北风
风力等级: 微风
刷新时间: 06:09

当前天气:多云
当前温度: 24
当前风向: 东北风
风力等级: 微风
刷新时间: 19:29


穿 衣: 天气炎热,建议着短衫、短裙、短裤、薄型T恤衫等清凉夏季服装。
空 调: 天气热,到中午的时候您将会感到有点热,因此建议在午后较热时开启制冷空调。
运 动: 天气较好,较适宜进行各种运动,但因天气热,请适当减少运动时间,降低运动强度。
感 冒: 各项气象条件适宜,发生感冒机率较低。但请避免长期处于空调房间中,以防感冒。
紫外线: 属中等强度紫外线辐射天气,外出时建议涂擦SPF高于15、PA+的防晒护肤品,戴帽子、太阳镜。
洗 车: 较适宜洗车,未来一天无雨,风力较小,擦洗一新的汽车至少能保持一天。

原创粉丝点击