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+的防晒护肤品,戴帽子、太阳镜。
洗 车: 较适宜洗车,未来一天无雨,风力较小,擦洗一新的汽车至少能保持一天。
阅读全文
0 0
- Python小工具——通过API获取天气预报
- Google 小工具 API
- Python——图片转字符小工具
- python小工具——下载更新代码工具
- 使用 Google API 进行翻译的 Python 小工具
- python调试django-rest-framework API的小工具--httpie
- WPF制作的天气预报小工具
- Python 小工具集合
- [python] 用户名小工具
- python小工具
- Python 内置小工具
- python 小工具总结
- python小工具
- Python 小工具--实现获取文件夹下面所有文件操作
- 【小工具】获取当前时间
- JAVA通过API获取天气预报信息(HTTP协议)
- 天气预报API——(一)根据IP地址获取天气预报
- python 单词翻译小工具
- org.hibernate.HibernateException: 'hibernate.dialect' must be set when no Connection available
- soj3360_完全背包
- python 笔记(2)
- Vegas项目归档功能怎么使用?
- struts2之路径问题
- Python小工具——通过API获取天气预报
- 文章标题 HDU 4280 :Island Transport (最大流--ISAP)
- RecyclerView 拖动/滑动多选的实现(3)
- 12 聚集函数:avg() count() max() min() sum()
- 字符串匹配问题——KMP算法理论
- Invitation Cards POJ
- 可视化工具--D3--案例分析--Histogram Chart
- web开发时浏览器兼容性问题汇总
- MonkeyRunner“不是内部或外部命令”解决办法