我在网上找了很多如何去使用国家气象数据网的API步骤,我找到的只是贴出来程序得到的是什么数据,具体怎么得到也没有说,我现在将我是怎么得到气象数据的方法写下来,仅供大家参考!
得到气象数据API的方法
第一步:进入国家气象数据网
第二步,找到API服务
第三步:找到自己需要的气象资料
以我为例,我找的是太原市小店区气象站七天的24项气象指标,选好之后,就可以点击完成选购
第四步:找到API的接口
在API订单找到以下图片
点击你订购的对应数据,点击查看,出现以下界面
然后点击样例,会出现新的网页
点击复制网页的网址,例如
http://api.:8090/api?userId=636095877921eaHmm&pwd=WfU0liC&dataFormat=json&interfaceId=getSurfEleByTimeRangeAndStaID&timeRange=1110050000,1110050000]&staIDs=53679&elements=TEM,TEM_Max,TEM_Min&dataCode=SURF_CHN_MUL_HOR
这就是API的接口了。
用python得到API的数据,并且将数据导入数据库中
以下是打印出API的代码
import requests # 需要这三个库import jsonDownload_addres = 'http://api.:8090/api?userId=636095877921eaHmm&pwd=WfU0liC&dataFormat=json&interfaceId=getSurfEleByTimeRangeAndStaID&timeRange=[1105000000,1105230000]&staIDs=53679&elements=Year,Mon,Day,Hour,PRS,PRS_Sea,PRS_Max,PRS_Min,RHU,RHU_Min,VAP,PRE_1h,TEM,TEM_Max,TEM_Min,&dataCode=SURF_CHN_MUL_HOR'f = requests.get(Download_addres)print(f.status_code)def jprint(obj):# create a formatted string of the Python JSON objecttext = json.dumps(obj, sort_keys=True, indent=4)print(text)jprint(f.json())
效果图如下
之后将数据放入数据库,代码如下
import requests # 需要这三个库import jsonimport sqlite3Download_addres = 'http://api.:8090/api?userId=636095877921eaHmm&pwd=WfU0liC&dataFormat=json&interfaceId=getSurfEleByTimeRangeAndStaID&timeRange=[1105000000,1105230000]&staIDs=53679&elements=Year,Mon,Day,Hour,PRS,PRS_Sea,PRS_Max,PRS_Min,RHU,RHU_Min,VAP,PRE_1h,TEM,TEM_Max,TEM_Min,&dataCode=SURF_CHN_MUL_HOR'info = requests.get(Download_addres)result =open('a.json','w')result.write(info.text)result.close()open_json = open('a.json','r',encoding='cp936')zd_json=json.load(open_json) #加载json文件open_json.close()#到这里zd_json是一个python字典print(zd_json["DS"][0]["Year"] + "." +zd_json["DS"][0]["Mon"])sql = sqlite3.connect('weather.db')cursor = sql.cursor()# 执行一条SQL语句,创建user表:cursor.execute('create table taiyuan (data varchar(20),time varchar(20) primary key, PRS varchar(20),\PRS_Sea varchar(20),PRS_Max varchar(20),PRS_Min varchar(20),RHU varchar(20), RHU_Min varchar(20),\VAP varchar(20),PRE_1h varchar(20),TEM varchar(20),TEM_Max varchar(20),TEM_Min varchar(20))')cursor.close()# 提交事务:mit()# 关闭Connection:sql.close()conn = sqlite3.connect('weather.db')cursor = conn.cursor() # 和游标产生联系#for r in range(0, len(zd_json["DS"])): # DS中有多少个字典print(zd_json["DS"][0]["Year"])print("类型是",len(zd_json["DS"]),type(len(zd_json["DS"])))for r in range(len(zd_json["DS"])) :cursor.execute("INSERT INTO taiyuan(data, \time,PRS,PRS_Sea,\PRS_Max,PRS_Min,RHU,RHU_Min,VAP,PRE_1h,\TEM,TEM_Max,TEM_Min)\VALUES ('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')" % \(zd_json["DS"][r]["Year"]+"."+zd_json["DS"][r]["Mon"]+"."+zd_json["DS"][r]["Day"],\zd_json["DS"][r]["Hour"],zd_json["DS"][r]["PRS"],zd_json["DS"][r]["PRS_Sea"],\zd_json["DS"][r]["PRS_Max"],zd_json["DS"][r]["PRS_Min"],zd_json["DS"][r]["RHU"], \zd_json["DS"][r]["RHU_Min"], zd_json["DS"][r]["VAP"], zd_json["DS"][r]["PRE_1h"], \zd_json["DS"][r]["TEM"],zd_json["DS"][r]["TEM_Max"],zd_json["DS"][r]["TEM_Min"]))#sql = "INSERT INTO EMPLOYEE(FIRST_NAME, \# LAST_NAME, AGE, SEX, INCOME) \# VALUES ('%s', '%s', %s, '%s', %s)" % \ 有大用!!!!# ('Mac', 'Mohan', 20, 'M', 2000)cursor.close()# 提交事务:mit()# 关闭Connection:conn.close()print("当前的时间是",zd_json["DS"][0]["Year"])
效果如下
以上是我选取的13个指标(可以得到24个,只需要改动以上的代码就可以得到24个指标的数据,我只是嫌麻烦没弄)
看到这里应该是可以弄出来气象数据的,麻烦大家一键三连~~~~祝电脑屏幕前的你学业有成,事业有成!加油!!!
########转载请标明出处!
点击此处可以到达海绵宝宝的大大世界的博客
如果觉得《教你如何用python获得中国气象数据网的API数据并且导入数据库(附源码)》对你有帮助,请点赞、收藏,并留下你的观点哦!