调用阿里API获取城市天气信息

赵继涛,男,西安工程大学电子信息学院,2021级硕士研究生

研究方向:图像处理

电子邮件:[email protected]

孟莉苹,女,西安工程大学电子信息学院,2021级硕士研究生,张宏伟人工智能课题组
研究方向:机器视觉与人工智能
电子邮件:[email protected]

一.阿里云天气预报API接口介绍

2.1阿里云天气预报API介绍

通过地名、地名对应ID、坐标区域、IP地址、景点名称ID、电话区号或邮编来查询天气情况。可查询到40天内的天气数据,可应用于能源、电力、农业、生活服务类应用、智能硬件、航天航海、旅游业、建筑业等领域。

2.2 调用API准备工作及认识

在调用API商品时,首先要确定认证方式,我们使用简单身份认证(AppCode)的认证方式。该方式适合场景:客户端环境(调用API商品的环境)安全可控,如内网环境。技术原理概述:客户端程序将AppCode放到Request Header中,或者放到Request的Query参数中,从而进行身份认证。优点:简单易用,无需复杂的生成签名的过程,各种开发语言都能很简单的使用,API商品也提供了多语言的调用示例。缺点:认证方式本身的安全性较低,AppCode在网络的传输过程是以明文的方式在Http Request中,因此存在泄露风险。
(使用建议:建议调用API时采用Https方式,尽量减少传输过程中泄露风险)

二.调用天气预报API

首先在“API市场”中选取“易源数据-全国天气预报查询”产品服务并免费申请购买资源。
在这里插入图片描述

购买成功后,登录“云市场”控制台,在已购买的服务中可以查看到所有购买成功的API商品信息,下图红框中的就是AppKey、AppSecret、AppCode信息。
在这里插入图片描述

采用简单身份认证调用方式时,将AppCode值放在Python代码的header中,配置authorization字段的值为:appcode+半角空格+appcode值。
在这里插入图片描述

通过参数文件查看可以调用的参数:
在这里插入图片描述

例如查询城市为“北京”,对应的信息如下所示:
在这里插入图片描述

在这里插入图片描述

三.代码实现

import urllib
import urllib.request as urllib2  
import urllib.error as error
import ssl
import json
host = 'https://ali-weather.showapi.com'
path = '/area-to-weather'
method = 'GET'
#appcode = " 你的appcode值"#appcode值可放在此处
querys='area=%E8%A5%BF%E5%AE%89&needMoreDay=0&needAlarm=0&need3HourForcast=0&needIndex=0'#引号中填写接口域名(此处为“西安”),可填写自己请求和调试参数的地区id。
bodys = {}
url = host + path + '?' + querys
request = urllib2.Request(url)
request.add_header('Authorization','APPCODE '+ appcode) #一定注意APPCODE后有空格
ctx = ssl.create_default_context()
ctx.check_hostname = False
ctx.verify_mode = ssl.CERT_NONE
response = urllib2.urlopen(request, context=ctx)
content = response.read()
#content = str(response.read(), 'utf-8')
if (content):
    print(content)

四.结果展示

在这里插入图片描述

如图所示,在程序当中实现西安当天本地温度,白天温度23°,夜间温度9°当天的日期为周四,日升日落时间等等,清晰地展现了城市天气的具体情况。

五、问题与解决办法

如果使用的是Python 3.x 以上的版本,注意python 3.x 以上的版本 urllib 和urllib2 已经被集合到一个包里 urllib 中找不到模块错误:没有名为“urllib2”的模块。
解决办法:urllib2用urllib.request替代。

在这里插入图片描述

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>