๊ธฐ์์ฒญ์์ ์ ๊ณตํ๋ ๋ ์จ API๋ฅผ ์ฌ์ฉํด๋ณด๋ ค๊ณ ํ๋ค.
ํ์ฌ ๋ด๊ฐ ๋ค๋๊ณ ์๋ ํ์ฌ๋ ๋ชจ์ํ๋ํผ์ ์ด์ํ๊ณ ์๋ค.
์ดํ์์๋ ๋ชจ์์ ๋ง๋ค ์ ์๋๋ฐ ๋ ์ง์ ์๊ฐ, ์ฅ์๋ฅผ ์ ๋๋ค.
๊ทธ๋ฌ๋ฉด ๋ชจ์์ ํ๋ ๋ ์ด ์ผ๊ธฐ์๋ณด๊ฐ ์ ๊ณต๋๋ ๋ ์ด๋ผ๋ฉด
๋ ์จ๋ฅผ ์๋ ค์ฃผ๋ฉด ๋ชจ์ ๋ ์ ๋ฐ๊พธ๊ฑฐ๋ ํฝ์คํ๋๋ฐ ๋์์ด ๋์ง ์์๊นํ๋ ์๊ฐ์์ ์์ํ๊ฒ ๋์๋ค.
์๋ ค์ฃผ๋ ๊ณณ์ด ์์ด์ ์ง์ ์ ์ด๋ณธ๋ค.์ด๊ฑธ ๋ณด๊ณ ์ข์ api๋ฅผ ์จ๋ณด๋ฉด์ ์์ง์ ์ฌ์ดํธ๊ฐ ๋์์ผ๋ฉด ์ข๊ฒ ๋ค.
๋จผ์ API๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด ๊ณต๊ณต๋ฐ์ดํฐ์ฌ์ดํธ์ ๊ฐ์ ๊ฐ์ ํด์ค๋ค.
๊ณต๊ณต๋ฐ์ดํฐ ํฌํธ
๊ตญ๊ฐ์์ ๋ณด์ ํ๊ณ ์๋ ๋ค์ํ ๋ฐ์ดํฐ๋ฅผใ๊ณต๊ณต๋ฐ์ดํฐ์ ์ ๊ณต ๋ฐ ์ด์ฉ ํ์ฑํ์ ๊ดํ ๋ฒ๋ฅ (์ 11956ํธ)ใ์ ๋ฐ๋ผ ๊ฐ๋ฐฉํ์ฌ ๊ตญ๋ฏผ๋ค์ด ๋ณด๋ค ์ฝ๊ณ ์ฉ์ดํ๊ฒ ๊ณต์ •ํ์ฉํ ์ ์๋๋ก ๊ณต๊ณต๋ฐ์ดํฐ(Datase
www.data.go.kr
๊ฐ์ ์ ํ ๋ค์์ ๊ฒ์์ฐฝ์ ๊ธฐ์์ฒญ์ ๊ฒ์ํ๋ค.
๊ทธ๋ค์ ์คํ API๋ฅผ ๋๋ฌ์ ๋ณธ์ธ์ด ์ํ๋ API๋ฅผ ์ฐพ์์ค๋ค. ๋๋ ์ค๊ธฐ์๋ณด ์กฐํ์๋น์ค๋ฅผ ์ด์ฉํ๋ค.
ํ์ฉ์ ์ฒญ ๋ฒํผ์ ๋๋ฌ์ ๋ชฉ์ ์ ๋ง๊ฒ ์์ฑํ๋ค. ๋๋ '๊ณต๋ถ'๋ผ๊ณ ์ ์๋ค.
ํ์ฉ์ ์ฒญ์ ํ๊ณ [์น์ธ] ๊ธฐ์์ฒญ_์ค๊ธฐ์๋ณด ์กฐํ์๋น์ค๋ฅผ ๋๋ฅด๋ฉด API ํค๋ฅผ ์ป์ ์ ์๋ค.
์์ ๋ณด์ด๋ ์ผ๋ฐ ์ธ์ฆํค 2๊ฐ๋ฅผ ์ ๋ถ ๋ณต์ฌํด์ ์ฌ์ฉํ๋ค.
์ ํ์๋ ๋ด์ฉ์์๋ ๋ ์ค ๋๋๊ฑฐ ์๋ฌด๊ฑฐ๋ ์ฐ๋ผ๊ณ ๋ช ์๋์ด ์๋ค.
์ด์ ์ฌ์ฉํ ์ค๋น๊ฐ ๋๋ฌ๋๋ฐ ๋ณธ์ธ์ด ์ฌ์ฉํ ๋ชฉ์ ์ด ๋ฌด์์ธ์ง์ ๋ง๊ฒ ์ฐ๋ฉด ๋๋ค.
1. ์ผ๊ธฐ์๋ณด๊ฐ์ง๊ณ ์ค๊ธฐ
โ (ํ๋์ํ) ์ด๋ฒ ์๋ณด๊ธฐ๊ฐ์๋ ๋์ฒด๋ก ๋ง๊ฒ ์ผ๋, 22์ผ(์)~24์ผ(๊ธ)์๋ ๊ฐ๋ ๊ตฌ๋ฆ๋ง๊ฒ ์ต๋๋ค.
โ (๊ธฐ์จ) 21์ผ(ํ)~22์ผ(์) ์์นจ ๊ธฐ์จ์ -5~1๋, ๋ฎ ๊ธฐ์จ์ 3~11๋๋ก ํ๋
(์ต์ ๊ธฐ์จ -2~2๋, ์ต๊ณ ๊ธฐ์จ 9~12๋)๊ณผ ๋น์ทํ๊ฑฐ๋ ์กฐ๊ธ ๋ฎ๊ฒ ๊ณ , 23์ผ(๋ชฉ)~27์ผ(์) ์์นจ ๊ธฐ์จ์ -2~4๋, ๋ฎ ๊ธฐ์จ์ 7~13๋๋ก ํ๋
(์ต์ ๊ธฐ์จ -1~3๋, ์ต๊ณ ๊ธฐ์จ 9~12๋)๊ณผ ๋น์ทํ๊ฒ ์ต๋๋ค.
โ (ํด์) ๋ฐ๋ค์ ๋ฌผ๊ฒฐ์ ์ํด๋จ๋ถ์ ๋จํด์๋ถ ํด์์์ 21์ผ(ํ)์ 1~4m๋ก ๋งค์ฐ ๋๊ฒ ์ผ๊ฒ ๊ณ , ๊ทธ ๋ฐ์ ๋ ์ 1~2m๋ก ์ผ๊ฒ ์ต๋๋ค.
์์ ๊ฐ์ ์ผ๊ธฐ์๋ณด๋ฅผ ์ป๊ณ ์ถ์ผ๋ฉด ์๋์ ๊ฐ์ ์ฝ๋๋ฅผ ์ ๋ ฅํ๋ฉด ๋๋ค.
# Python3 ์ํ ์ฝ๋ #
import requests
import json
url = 'http://apis.data.go.kr/1360000/MidFcstInfoService/getMidFcst'
params = {
'serviceKey' : key2, #๋ณธ์ธ ํค๊ฐ
'pageNo' : '1',
'numOfRows' : '10',
'dataType' : 'JSON',
'stnId' : '156', #์ง์ญ์ฝ๋
'tmFc' : '202302171800' #ํ์ธํ ๋ ์ง
}
response = requests.get(url, params=params)
response.content.decode('utf8')
# print(response.content)
print(json.loads(response.text))
"""
๊ธฐ์์ฒญ ์์ ์์๋ print(response.content)๋ก ๋์ด์์๋๋ฐ,
๋๋ ์ฌ๊ธฐ์ ํ๊ธ์ด ์ ๋์ฝ๋๋ก ๋์์ ํ๊ธ์ ์ฝ์ ์๊ฐ ์์๋ค.
๊ทธ๋์ json์ ์ฝ์ ์ ์๊ฒ import json์ ํด์ฃผ๊ณ
json์ผ๋ก ๋ก๋ํด์ ์ฝ์๋ค.
๊ทธ๋ฅ printํด์ ํ๊ธ์ด ๋์จ๋ค๋ฉด ์ฃผ์์ฒ๋ฆฌ๋ฅผ ์ง์ฐ๊ณ ์ฌ์ฉํด๋ ๋๋ค.
"""
'serviceKey' ๋ณ์์๋ ์๊น ํค๊ฐ 2๊ฐ์ค ํ๋ ๋๋๊ฑธ ์ ๋ ฅํ๋ฉด ๋๋ค.
๋๋ ์ธ์ฝ๋ฉํค๊ฐ ๋ ๋๋ ์์๊ณ , ๋์ฝ๋ฉํค๊ฐ ๋ ๋๊ฐ ์์๋ค.
'pageNo'์ 'numOfRows'๋ ๋ณ์๋ช ๊ณผ ๊ฐ๊ณ ,
'dataType'์ 'XML' ๋๋ 'JSON'ํ์์ผ๋ก ๋ฐ์ ์ ์๋ค.
'stnId'๋ ์๊ณ ์ถ์ ์ง์ญ์ ์ ์ผ๋ฉด ๋๋ค.
๋๋ ๊ด์ฃผ, ์ ๋ผ๋จ๋ ์ง์ญ์ ์๊ณ ์ถ์ด์ '156'์ ์ ๋ ฅํ๋ค.
์ง์ ๋ฒํธ | ๊ตฌ์ญ |
105 | ๊ฐ์๋ |
108 | ์ ๊ตญ |
109 | ์์ธ, ์ธ์ฒ, ๊ฒฝ๊ธฐ๋ |
131 | ์ถฉ์ฒญ๋ถ๋ |
133 | ๋์ , ์ธ์ข , ์ถฉ์ฒญ๋จ๋ |
146 | ์ ๋ผ๋ถ๋ |
156 | ๊ด์ฃผ, ์ ๋ผ๋จ๋ |
143 | ๋๊ตฌ, ๊ฒฝ์๋ถ๋ |
159 | ๋ถ์ฐ, ์ธ์ฐ, ๊ฒฝ์๋จ๋ |
184 | ์ ์ฃผ๋ |
'tmFc' ๋ ๋ ์ง๋ฅผ ์ ์ผ๋ฉด ๋๋ค. ์ด๋ถ๋ถ์ ์ ํ์ฌํญ์ด ์๋ค.
์ค๋ ๋ ์ง ๊ธฐ์ค์ผ๋ก 1์ผ์ ๊น์ง ์ ๋ ฅ๊ฐ๋ฅํ๋ค.
์ค๋ ๊ธฐ์ค์ผ๋ก 2023๋ 02์ 18์ผ์ด๋ผ๊ณ ํ๋ค๋ฉด
202302170600 ~ 202302180600 ๊น์ง ๋๋ค.
-์ผ 2ํ(06:00,18:00)ํ ์์ฑ ๋๋ฉฐ ๋ฐํ์๊ฐ์ ์ ๋ ฅ YYYYMMDD0600 (1800)-์ต๊ทผ 24์๊ฐ ์๋ฃ๋ง ์ ๊ณต |
๋ง์ฝ ๋ฒ์์์ ๋ฒ์ด๋ ๋ ์ง๋ฅผ ์ ๋ ฅํ๋ฉด ์๋ฌ์ฝ๋๋ฅผ ๋ฆฌํด๋ฐ๊ฒ ๋๋ค.
{'response': {'header': {'resultCode': '99',
'resultMsg': '์ต๋ ์กฐํ ๊ธฐ๊ฐ์ ์ค๋ ๊ธฐ์ค์ผ๋ก 1์ผ ์ ๊น์ง์
๋๋ค.'}}}
2. ์ค๊ธฐ์ก์์๋ณด์กฐํํ๊ธฐ
์๋ณด๊ตฌ์ญ์ฝ๋, ๋ฐํ์๊ฐ์ ์กฐํ ์กฐ๊ฑด์ผ๋ก ์๋ณด์ผ๋ก๋ถํฐ
3์ผ์์ 10์ผ๊น์ง ์ก์๋ ์จ์ ๋ณด๋ฅผ ์กฐํํ๋ ๊ธฐ๋ฅ์ด๋ค.
# Python3 ์ํ ์ฝ๋ #
import requests
import json
url = 'http://apis.data.go.kr/1360000/MidFcstInfoService/getMidLandFcst'
params = {
'serviceKey' : key2, # ๋ณธ์ธ ํค๊ฐ
'pageNo' : '1',
'numOfRows' : '10',
'dataType' : 'JSON',
'regId' : '11F20000', # ์ง์ญ์ฝ๋
'tmFc' : '202302171800' # ํ์ธํ ๋ ์ง
}
response = requests.get(url, params=params)
response.content.decode('utf8')
# print(response.content)
print(json.loads(response.text))
{'response': {'header': {'resultCode': '00', 'resultMsg': 'NORMAL_SERVICE'}, 'body': {'dataType': 'JSON', 'items': {'item': [{'regId': '11F20000', 'rnSt3Am': 0, 'rnSt3Pm': 0, 'rnSt4Am': 0, 'rnSt4Pm': 0, 'rnSt5Am': 0, 'rnSt5Pm': 30, 'rnSt6Am': 30, 'rnSt6Pm': 30, 'rnSt7Am': 30, 'rnSt7Pm': 10, 'rnSt8': 20, 'rnSt9': 10, 'rnSt10': 10, 'wf3Am': '๋ง์', 'wf3Pm': '๋ง์', 'wf4Am': '๋ง์', 'wf4Pm': '๋ง์', 'wf5Am': '๋ง์', 'wf5Pm': '๊ตฌ๋ฆ๋ง์', 'wf6Am': '๊ตฌ๋ฆ๋ง์', 'wf6Pm': '๊ตฌ๋ฆ๋ง์', 'wf7Am': '๊ตฌ๋ฆ๋ง์', 'wf7Pm': '๋ง์', 'wf8': '๋ง์', 'wf9': '๋ง์', 'wf10': '๋ง์'}]}, 'pageNo': 1, 'numOfRows': 10, 'totalCount': 1}}} |
๋๋จธ์ง ๊ฐ๋ค์ ๋ค ๋๊ฐ์ผ๋ ๋์ด๊ฐ๊ณ
'regId'๋ ์ง์ญ์ฝ๋์ด๋ค. ์ค๊ธฐ์ก์์ผ๊ธฐ์๋ณด์์๋ ์ง์ญ์ฝ๋๊ฐ ๋ ๋ค๋ฅด๋ค.
์๋ณด๊ตฌ์ญ์ฝ๋ | ๊ตฌ์ญ |
11B00000 | ์์ธ, ์ธ์ฒ, ๊ฒฝ๊ธฐ๋ |
11D10000 | ๊ฐ์๋์์ |
11D20000 | ๊ฐ์๋์๋ |
11C20000 | ๋์ , ์ธ์ข , ์ถฉ์ฒญ๋จ๋ |
11C10000 | ์ถฉ์ฒญ๋ถ๋ |
11F20000 | ๊ด์ฃผ, ์ ๋ผ๋จ๋ |
11F10000 | ์ ๋ผ๋ถ๋ |
11H10000 | ๋๊ตฌ, ๊ฒฝ์๋ถ๋ |
11H20000 | ๋ถ์ฐ, ์ธ์ฐ, ๊ฒฝ์๋จ๋ |
11G00000 | ์ ์ฃผ๋ |
๊ทธ๋ฆฌ๊ณ ๋ฆฌํด๊ฐ์ ๋ํด์ ์กฐ๊ธ ์๋ ค์ฃผ์๋ฉด
'rnSt3Am': 0 ์ 3์ผ ํ ์ค์ ์ ๋น์ฌ ํ๋ฅ ์ด 0%๋ผ๋ ๋ป์ด๋ค.
'rnSt3Pm': 0 ์ 3์ผ ํ ์คํ์ ๋น์ฌ ํ๋ฅ ์ด 0%๋ผ๋ ๋ป์ด๋ค.
4,5,6,7,8,9,10 ์ ๋ณธ์ธ์ด ์ ์ ๋ ์ง์ 4์ผํ, 5์ผํ, 10์ผํ ๋ผ๋ ๋ป์ด๋ค.
'wf3Am': '๋ง์', ์ด๊ฑด 3์ผ ํ ์ค์ ์ ๊ตฌ๋ฆ ์ํ์ด๋ค.
์ํ๋ ์๋์ ๊ฐ์ด ๋ํ๋๋ค๊ณ ํ๋ค.
์ค๊ธฐ์๋ณด ํต๋ณด๋ฌธ์์ ๊ตฌ๋ฆ์ ์์ ๋ฐ๋ผ ํ๋์ํ๋ฅผ 3๋จ๊ณ(๋ง์, ๊ตฌ๋ฆ๋ง์, ํ๋ฆผ)์ผ๋ก ํํ, ํ์์ ๋ฐ๋ผ ๋น, ๋, ๋น/๋, ์๋๊ธฐ ๋ก ํํํ๊ณ ์์ผ๋ฉฐ, ์ด๋ฅผ ์ข ํฉํ์ฌ ํจ๊ป ์ฌ์ฉํ๊ณ ์์ - ๋ง์ - ๊ตฌ๋ฆ๋ง์, ๊ตฌ๋ฆ๋ง๊ณ ๋น, ๊ตฌ๋ฆ๋ง๊ณ ๋, ๊ตฌ๋ฆ๋ง๊ณ ๋น/๋, ๊ตฌ๋ฆ๋ง๊ณ ์๋๊ธฐ - ํ๋ฆผ, ํ๋ฆฌ๊ณ ๋น, ํ๋ฆฌ๊ณ ๋, ํ๋ฆฌ๊ณ ๋น/๋, ํ๋ฆฌ๊ณ ์๋๊ธฐ |
๊ทธ ์ธ์๋ ์จ๋, ํด์๋ ์จ๊ฐ ์๋๋ฐ ๊ทธ๊ฑด ์ฐพ์์ ํด๋ณด๊ธธ ๋ฐ๋๋ค.
ํน์๋ผ๋ ์๋ฌ๊ฐ ๋๋ค๋ฉด ์๋ ํ๋ฅผ ์ฐธ๊ณ ํด์ ํด๊ฒฐํ๋ฉด ๋์์ด ๋๋ค.
์๋ฌ์ฝ๋ | ์๋ฌ๋ฉ์ธ์ง | ์ค๋ช |
00 | NORMAL_SERVICE | ์ ์ |
01 | APPLICATION_ERROR | ์ดํ๋ฆฌ์ผ์ด์ ์๋ฌ |
02 | DB_ERROR | ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฌ |
03 | NODATA_ERROR | ๋ฐ์ดํฐ์์ ์๋ฌ |
04 | HTTP_ERROR | HTTP ์๋ฌ |
05 | SERVICETIME_OUT | ์๋น์ค ์ฐ๊ฒฐ์คํจ ์๋ฌ |
10 | INVALID_REQUEST_PARAMETER_ERROR | ์๋ชป๋ ์์ฒญ ํ๋ผ๋ฉํฐ ์๋ฌ |
11 | NO_MANDATORY_REQUEST_PARAMETERS_ERROR | ํ์์์ฒญ ํ๋ผ๋ฉํฐ๊ฐ ์์ |
12 | NO_OPENAPI_SERVICE_ERROR | ํด๋น ์คํAPI์๋น์ค๊ฐ ์๊ฑฐ๋ ํ๊ธฐ๋จ |
20 | SERVICE_ACCESS_DENIED_ERROR | ์๋น์ค ์ ๊ทผ๊ฑฐ๋ถ |
21 | TEMPORARILY_DISABLE_THE_SERVICEKEY_ERROR | ์ผ์์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ ์๋น์ค ํค |
22 | LIMITED_NUMBER_OF_SERVICE_REQUESTS_EXCEEDS_ERROR | ์๋น์ค ์์ฒญ์ ํํ์ ์ด๊ณผ์๋ฌ |
30 | SERVICE_KEY_IS_NOT_REGISTERED_ERROR | ๋ฑ๋ก๋์ง ์์ ์๋น์คํค |
31 | DEADLINE_HAS_EXPIRED_ERROR | ๊ธฐํ๋ง๋ฃ๋ ์๋น์คํค |
32 | UNREGISTERED_IP_ERROR | ๋ฑ๋ก๋์ง ์์ IP |
33 | UNSIGNED_CALL_ERROR | ์๋ช ๋์ง ์์ ํธ์ถ |
99 | UNKNOWN_ERROR | ๊ธฐํ์๋ฌ |
'๐๐ฎ๐ฉ๐๐ค๐ฃ > ๐ผ๐๐' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋์ค์ฝ๋ ๋ด] ๋กค ์ ์ ๊ฒ์๊ธฐ๋ฅ ๋ง๋ค๊ธฐ - 1 (0) | 2024.03.17 |
---|---|
ํ์ด์ฌ ๊ฐ์ข OCR ์ฌ์ฉํด๋ณด๊ธฐ ๋ฐ ๋ค์ด๋ฒ ํด๋ผ์ฐ๋ AI OCR ์ฌ์ฉ๋ฒ (1) (0) | 2023.03.30 |
ํ์ด์ฌ ๊ธฐ์์ฒญ ๋จ๊ธฐ์๋ณด API ์ฌ์ฉํด๋ณด๊ณ ํ์ฉํ๊ธฐ (0) | 2023.02.20 |
koGPT, openAI GPT3 ์ฌ์ฉํด๋ณด๊ธฐ (chat gpt3, dall-e) (0) | 2023.02.13 |
์นด์นด์ค API 'Karlo', stable diffusion ์ฌ์ฉํด๋ณด๊ธฐ (0) | 2023.02.12 |
๋๊ธ