教你如何用python获得中国气象数据网的API数据并且导入数据库(附源码)

我在网上找了很多如何去使用国家气象数据网的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个指标的数据,我只是嫌麻烦没弄)


看到这里应该是可以弄出来气象数据的,麻烦大家一键三连~~~~祝电脑屏幕前的你学业有成,事业有成!加油!!!

########转载请标明出处!
点击此处可以到达海绵宝宝的大大世界的博客

  • 13
    点赞
  • 69
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值