我在网上找了很多如何去使用国家气象数据网的API步骤,我找到的只是贴出来程序得到的是什么数据,具体怎么得到也没有说,我现在将我是怎么得到气象数据的方法写下来,仅供大家参考!
得到气象数据API的方法
第一步:进入国家气象数据网
第二步,找到API服务
第三步:找到自己需要的气象资料
以我为例,我找的是太原市小店区气象站七天的24项气象指标,选好之后,就可以点击完成选购
第四步:找到API的接口
在API订单找到以下图片
点击你订购的对应数据,点击查看,出现以下界面
然后点击样例,会出现新的网页
点击复制网页的网址,例如
http://api.data.cma.cn:8090/api?userId=636095877921eaHmm&pwd=WfU0liC&dataFormat=json&interfaceId=getSurfEleByTimeRangeAndStaID&timeRange=20211110050000,20211110050000]&staIDs=53679&elements=TEM,TEM_Max,TEM_Min&dataCode=SURF_CHN_MUL_HOR
这就是API的接口了。
用python得到API的数据,并且将数据导入数据库中
以下是打印出API的代码
import requests # 需要这三个库
import json
Download_addres = 'http://api.data.cma.cn:8090/api?userId=636095877921eaHmm&pwd=WfU0liC&dataFormat=json&interfaceId=getSurfEleByTimeRangeAndStaID&timeRange=[20211105000000,20211105230000]&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 object
text = json.dumps(obj, sort_keys=True, indent=4)
print(text)
jprint(f.json())
效果图如下
之后将数据放入数据库,代码如下
import requests # 需要这三个库
import json
import sqlite3
Download_addres = 'http://api.data.cma.cn:8090/api?userId=636095877921eaHmm&pwd=WfU0liC&dataFormat=json&interfaceId=getSurfEleByTimeRangeAndStaID&timeRange=[20211105000000,20211105230000]&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()
# 提交事务:
sql.commit()
# 关闭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()
# 提交事务:
conn.commit()
# 关闭Connection:
conn.close()
print("当前的时间是",zd_json["DS"][0]["Year"])
效果如下
以上是我选取的13个指标(可以得到24个,只需要改动以上的代码就可以得到24个指标的数据,我只是嫌麻烦没弄)
看到这里应该是可以弄出来气象数据的,麻烦大家一键三连~~~~祝电脑屏幕前的你学业有成,事业有成!加油!!!
########转载请标明出处!
点击此处可以到达海绵宝宝的大大世界的博客