python获取天气api的数据(get方法)详解编程语言

python获取天气api的数据

# -*- coding: UTF-8 -*- 
from urllib.parse import urlencode 
#from urllib.parse import parse_qs 
import requests 
 
def wz(ct): 
    # 天气接口 
    url="https://tianqiapi.com/api" 
    # 参数 
    data={} 
    data['version']='v6' 
    data['appid']= 注册后免费提供给开发者 
    data['appsecret']='注册后免费提供给开发者' 
    data['city']=ct 
 
    # 将参数转换成url可用格式 
    data=urlencode(data) 
 
    # 将str类型转换成dict类型 
    # def test(): 
    #     print('字符串形式') 
    #     dictData = data 
    #     print(dictData) 
    #     print('转换成字典形式') 
    #     strDicts=parse_qs(dictData) 
    #     print(strDicts) 
    # test() 
 
    # 最终的url请求 
    request=url+'?'+data 
 
    # 读取请求结果 
    rep=requests.get(request) 
 
    # 请求结果转换成json格式 
    repJson = rep.json() 
 
    cityid = repJson.get('cityid') 
    tdate = repJson.get('date') 
    week = repJson.get('week') 
    city = repJson.get('city') 
    wea = repJson.get('wea') 
    tem2 =repJson.get('tem2') 
    win =repJson.get('win') 
    win_speed = repJson.get('win_speed') 
 
    dic={'cityid':cityid,'ddate':tdate,'week':week,'city':city,'wea':wea,'tem2':tem2,'win':win,'win_speed':win_speed} 
    print(dic) 
wz('杭州')
#执行结果 
{'cityid': '101210101', 'ddate': '2020-12-10', 'week': '星期四', 'city': '杭州', 'wea': '阴', 'tem2': '9', 'win': '北风', 'win_speed': '2级'}

4.总结:实现过程

① python,请求方式GET

②定义接口地址和请求数据,按照格式拼接起来发送给服务器:

# 定义接口地址:   
url="https://tianqiapi.com/api" 
 
# 需要的请求参数  
 data={} 
data['version']='v6' 
data['appid']=天气api网站后免费提供给注册的开发者 
data['appsecret']='天气api网站后免费提供给注册的开发者' 
data['city']=ct 
print(data) 
{'version': 'v6', 'appid': 天气api网站后免费提供给注册的开发者, 'appsecret': '天气api网站后免费提供给注册的开发者', 'city': '杭州'} 
print(type(data)) 
<class 'dict'> 
 
# 将参数转换成url可用格式 
data=urlencode(data) 
print(data) 
version=v6&appid=天气api网站后免费提供给注册的开发者&appsecret=天气api网站后免费提供给注册的开发者&city=%E6%9D%AD%E5%B7%9E 
print(type(data)) 
<class 'str'> 
# 按照格式拼接, 最终的url请求    
request=url+'?'+data 
print(type(request)) 
<class 'str'> 
print(request) 
https://v0.yiketianqi.com/api?version=v61&appid=注册后免费提供给开发者&appsecret=’注册后免费提供给开发者‘

③读取请求结果,数据需要进行编码(转码前后对比)

#读取请求结果 
rep=requests.get(request) 
print(type(rep)) 
 <class 'requests.models.Response'>  
print(rep) 
<Response [200]> 
 
#需要对请求结果编码 
repJson = rep.json() 
print(type(repJson)) 
<class 'dict'> 
print(repJson) 
{'cityid': '101210101', 'date': '2020-12-10', 'week': '星期四', 'update_time': '2020-12-10 19:56:06', 'city': '杭州', 'cityEn': 'hangzhou', 'country': '中国',     'countryEn': 'China', 'wea': '阴', 'wea_img': 'yin', 'tem': '9', 'tem1': '12', 'tem2': '9', 'win': '北风', 'win_speed': '2级', 'win_meter': '小于12km/h', 'humidity': '80%', 'visibility': '2.7km', 'pressure': '1018', 'air': '93', 'air_pm25': '93', 'air_level': '良', 'air_tips': '空气好,可以外出活动,除极少数对污染物特别敏感的人群以外,对公众没有危害!', 'alarm': {'alarm_type': '', 'alarm_level': '', 'alarm_content': ''}} 

④按需提取结果

例:cityid = repJson.get('cityid') 
dic={'cityid':cityid,'ddate':tdate,'week':week,'city':city,'wea':wea,'tem2':tem2,'win':win,'win_speed':win_speed} 
print(dic)

 

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/17724.html

(0)
上一篇 2021年7月19日 20:27
下一篇 2021年7月19日 20:27

相关推荐

发表回复

登录后才能评论