공공 데이터 이용을 위한 OPEN API 활용 코딩 연습 중
import requests
import xmltodict
import json
import datetime
API_KEY = "**********************************************************************************************************"
## URL이 인코딩된 상태로 제공된 KEY이므로 Decoding이 필요
API_KEY_decode = requests.utils.unquote(API_KEY)
## 위의 명령어로 URL이 제외된 디코딩 코드
req_url = "http://openapi.airkorea.or.kr/openapi/services/rest/MsrstnInfoInqireSvc/getTMStdrCrdnt"
umd_name = "논현동"
num_of_rows = 10
page_no = 1
output = "json"
req_params = {"ServiceKey" : API_KEY_decode, "numOfRows" : num_of_rows, "pageNo" : page_no, "umdName" : umd_name,
"_returnType" : output}
dict_data = requests.get(req_url, params = req_params).json()
for k in range(dict_data['totalCount']) :
sido = dict_data['list'][k]['sidoName']
sgg = dict_data['list'][k]['sggName']
umd = dict_data['list'][k]['umdName']
tmX = dict_data['list'][k]['tmX']
tmY = dict_data['list'][k]['tmY']
print("- 위치:{0}, {1}, {2}".format(sido, sgg, umd))
print("- k = {0}, TM 좌표(X, Y) : {1}, {2}\n".format(k, tmX, tmY))
k = 0
TM_X = dict_data['list'][k]['tmX']
TM_Y = dict_data['list'][k]['tmY']
print("TM 좌표(X, Y): {0}, {1}".format(TM_X, TM_Y))
req_url_2 = "http://openapi.airkorea.or.kr/openapi/services/rest/MsrstnInfoInqireSvc/getNearbyMsrstnList"
x_val = TM_X
y_val = TM_Y
num_of_rows_2 = 10
page_no_2 = 1
output_2 = "json"
req_params_2 = {"ServiceKey" : API_KEY_decode, "numOfRows" : num_of_rows_2, "tmX" : x_val, "tmY" : y_val,
"pageNo" : page_no_2, "numOfRows" : num_of_rows_2, "_returnType" : output_2}
dict_data_2 = requests.get(req_url_2, params = req_params_2).json()
print(dict_data_2)
print("해당 지역 근처에 있는 측정소의 개수:", dict_data_2['totalCount'])
print("측정소 정보")
for k in range(dict_data_2['totalCount']) :
stationName = dict_data_2['list'][k]['stationName']
distance = dict_data_2['list'][k]['tm']
addr = dict_data_2['list'][k]['addr']
print("- 측정소 이름 : {0}, 거리 : {1}[km]".format(stationName, distance))
print("- 측정소 주소 : {0}\n".format(addr))
req_url_3 ="http://openapi.airkorea.or.kr/openapi/services/rest/ArpltnInforInqireSvc/getMsrstnAcctoRltmMesureDnsty"
station_name = "도산대로"
data_term = "DAILY"
num_of_rows_3 = 10
page_no_3 = 1
version = 1.3
output_3 = "json"
req_params_3 = {"ServiceKey" : API_KEY_decode,
"stationName" : station_name,
"dataTerm" : data_term,
"numOfRows" : num_of_rows_3,
"ver" : version,
"pageNo" : page_no_3,
"numOfRows" : num_of_rows_3,
"_returnType" : output_3}
dict_data_3 = requests.get(req_url_3, params = req_params_3).json()
print(len(dict_data_3['list']))
for k in range(len(dict_data_3['list'])) :
so2grade = dict_data_3['list'][k]['so2Value']
pm25grade = dict_data_3['list'][k]['pm25Value']
o3grade = dict_data_3['list'][k]['o3Value']
time = dict_data_3['list'][k]['dataTime']
print("시간 : {}".format(time))
print("아황산 등급 : {}".format(so2grade))
print("미세먼지 등급 : {}".format(pm25grade))
print("오존 등급 : {}".format(o3grade))
(데이터 분석을 위한 파이썬 철저 입문의 예문 응용)
'파이썬(PYTHON)' 카테고리의 다른 글
DataFrame 연습 (0) | 2020.08.04 |
---|---|
PyQt5를 이용한 기본 UI 구성 (0) | 2020.08.03 |
공공 정보를 이용한 OPEN API 활용-3 (0) | 2020.08.02 |
공공 정보를 이용한 OPEN API 활용-2 (0) | 2020.08.02 |
공공 정보를 이용한 OPEN API 활용 (0) | 2020.08.01 |