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