주제: 실시간 기상자료 수집코드 구현하기(코드 포함)
작성: 2024-02-29
수정: 2024-03-12 (추가내용 기술)
해당 포스팅은 "오픈 API 활용한 실시간 기상데이터 수집" 관련 2번째 글입니다.
🧑🏻💻 API 활용한 실시간 기상데이터 수집 ☁️
1. 사이트 소개 - 2024.02.25 - [✔ Python/10. Others] - [기상청 API 허브] API 활용한 기상자료 쉽게 다운받기
2. 코드 구현(1) - 2024.03.01 - [✔ Python/10. Others] - [기상청 API 허브] 지상관측 데이터 다운받기 (1/2)
3. 코드 구현(2) - 2024.03.14 - [✔ Python/10. Others] - [기상청 API 허브] 지상관측 데이터 다운받기(2/2)
4. 코드 구현(3) - 2024.03.14 - [✔ Python/10. Others] - [기상청 API 허브] 위성 데이터 다운받기 (코드 포함)
이전 포스팅에서 기상데이터를 다운로드할 수 있는 "기상청 API 허브"에 대해 소개했습니다.
그럼 이번 포스팅에서는 샘플코드를 통해서 어떻게 API 활용하여 데이터를 조회할 수 있는지 확인하도록 하겠습니다.
샘플 전체코드
기상청 API 허브에는 기본적으로 샘플코드를 제공합니다. 하지만, 사용하는 OS 및 환경에 따라서 인코딩 이슈로 한글과 같은 문자열이 제대로 표현되지않는 경우가 발생합니다. 이에 기본적으로 제공되는 코드에서 디코딩하는 코드 한줄만 추가로 작성하도록 합니다.
우선, 전체 소스코드입니다.
from urllib.request import urlopen
domain = "https://apihub-pub.kma.go.kr/api/typ01/cgi-bin/url/nph-aws2_min?"
tm = "tm1=202302132200&tm2=202302132210&"
stn_id = "stn=104&"
option = "disp=0&help=1&authKey="
API_KEY = '@@@@@@@@@본인의 API_KEY 작성해주세요@@@@@@@@@@@@'
url = domain + tm + stn_id + option+ API_KEY
with urlopen (url) as I:
html_bytes = I.read ()
html = html_bytes.decode('euc-kr')
print (html)
샘플 코드 이해하기 (1)
1. 모듈 임포트하기
URL을 읽어서 내용을 확인하기 위해 urllib.request의 urlopen 함수를 가져와서 사용합니다.
from urllib.request import urlopen
2. API 요청을 위한 URL 구성
domain = "https://apihub-pub.kma.go.kr/api/typ01/cgi-bin/url/nph-aws2_min?"
tm = "tm1=202302132200&tm2=202302132210&"
stn_id = "stn=104&"
option = "disp=0&help=1&"
API_KEY = 'authKey=@@@@@@@@@본인의 API_KEY 작성해주세요@@@@@@@@@@@@'
url = domain + tm + stn_id + option + API_KEY
API 요청에서는 각 문자열 변수를 사용하여 최종적인 API 요청 URL을 구성합니다.
본인이 조회 및 다운받고자하는 데이터에 따라 URL 구조는 상이하니, 필요한 데이터의 URL 확인이 필요합니다.
이번 코드에서는 기상관측(AWS) 데이터를 조회하겠습니다. * 도메인을 제외한 문자열은 &를 통해서 구분됩니다.
- domain: API의 기본 도메인 주소입니다.
- tm: 조회할 시간 범위를 tm1 (시작 시간)과 tm2 (종료 시간)로 설정합니다.
- stn_id: 관측소 ID를 의미합니다. 여기서는 104가 사용되었습니다.
- option: 추가 옵션을 의미하며, 여기서는 출력 형식(disp=0)과 도움말 사용 여부(help=1)를 설정합니다.
- API_KEY: 사용자는 여기에 자신의 API 키를 입력해야 합니다. API 키는 서비스를 이용하기 위해 필요한 인증 키입니다.
3. API 요청 및 응답 처리
with urlopen(url) as I:
html_bytes = I.read()
html = html_bytes.decode('euc-kr')
print(html)
- urlopen(url): 구성된 URL로 웹 요청을 보냅니다.
- html_bytes = I.read(): 서버로부터 받은 응답을 바이트 형태로 읽습니다.
- html = html_bytes.decode('euc-kr'): 응답 받은 바이트 데이터를 euc-kr 인코딩을 사용하여 문자열로 디코딩합니다. euc-kr은 한국어 웹 페이지에서 자주 사용되는 인코딩 방식입니다.
- print(html): 디코딩된 HTML 내용을 출력합니다. 이 결과는 API 호출의 응답으로, 기상 정보를 포함할 수 있습니다.
다음 포스팅...? 원하는 데이터 다운받기
원하는 데이터를 클릭하면, 해당 데이터 인자 및 관련 URL 예시를 제공합니다.
데이터 인자를 변경하여 본인이 원하는 데이터를 취사선택하여 다운로드 받을 수 있습니다.
다음 포스팅에서는 조회가 아닌 데이터 수집하는 코드를 구현해보도록 하겠습니다.
관련 글
해당 포스팅은 "오픈 API 활용한 실시간 기상데이터 수집" 관련 2번째 글입니다.
🧑🏻💻 API 활용한 실시간 기상데이터 수집 ☁️
1. 사이트 소개 - 2024.02.25 - [✔ Python/10. Others] - [기상청 API 허브] API 활용한 기상자료 쉽게 다운받기
2. 코드 구현(1) - 2024.03.01 - [✔ Python/10. Others] - [기상청 API 허브] 지상관측 데이터 다운받기 (1/2)
3. 코드 구현(2) - 2024.03.14 - [✔ Python/10. Others] - [기상청 API 허브] 지상관측 데이터 다운받기(2/2)
4. 코드 구현(3) - 2024.03.14 - [✔ Python/10. Others] - [기상청 API 허브] 위성 데이터 다운받기 (코드 포함)
728x90
반응형
'Python > 5️⃣ 웹' 카테고리의 다른 글
[HTTP 상태코드] 404 오류: 에러의 정체는? (0) | 2024.07.12 |
---|---|
[기상청 API 허브] 위성 데이터 다운받기 (코드 포함) (7) | 2024.03.14 |
[기상청 API 허브] 지상관측 데이터 다운받기(2/2) (0) | 2024.03.14 |
[기상청 API 허브] API 활용한 기상자료 쉽게 다운받기 (32) | 2024.02.25 |