一直觉得自己的博客太简单了,今天想加点功能上去,说干就干,准备加个最常用的,天气预报功能。
看了几个例子,觉得也不是很难,网上找个接口就是了,不过,这百度的apistore里面。。。死活不让我获取手机验证码,所以转向JUHE里面去,还送500次的免费次数,绝对够用了
进入正题
首先,这个功能的主旨是:通过其他网站提供的api接口取回数据,一般是JSON格式的,然后自己渲染在前端页面上
直接看代码,这个代码是测试用例,最后加到网站以后还需要自行修改,不用class,直接添加函数就好。
import os,urllib.request,urllib.parse
import json
class weather():
code_uri = "http://v.juhe.cn/weather/index" #api的基础地址,不会变,所以单独设一个变量
def check_weather(self):
#让用户自行输入需要查询的地址
city = input('请输入城市名:')
#url地址里面的查询参数,urllib的用法后面单独讲
parameter = urllib.parse.urlencode({"cityname":city,"dtype":"","format":"","key":"你自己申请到的apikey"})
#最终合成的uri地址
uri = self.code_uri +"?"+parameter
#通过json模块来读取上面接口打开后返回的数据,并解码
ret = json.loads(urllib.request.urlopen(uri).read().decode("utf8"))
if ret['error_code'] !=0: #如果错误代码不为0
print (ret['reason']) #则打印原因
print (ret['error_code']) #和具体哪个故障点
return (ret['reason'],ret['error_code'])
else:
print (ret['reason']) #如果没有错误,打印生成结果
#则用output表示查询出来的内容
output = "城市:"+ret['result']['today']['city']+"\r\n"
output += "日期:"+ret['result']['today']['date_y']+","+ret['result']['today']['week']+"\r\n"
outp