✔ Python/10. Others

[기상청 API 허브] 지상관측 데이터 다운받기(2/2)

  • -
주제: [지상관측] 실시간 기상자료 수집코드 구현하기(코드 포함)
수정: 2024-03-14 (본문 및 링크 수정)

해당 포스팅은 "오픈 API 활용한 실시간 기상데이터 수집" 관련 3번째 글입니다.

🧑🏻‍💻 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 허브] 위성 데이터 다운받기 (코드 포함)

이전 포스팅에서는 지상관측 데이터를 조회하여 데이터 확인하는 작업까지 진행했습니다.
그렇다면, 단순히 조회를 넘어서 해당 데이터를 저장하고 싶다면? 어떻게 할 수 있는지 확인해 보도록 하겠습니다.

우선, 이전에 사용했던 URL은 "help" 인자를 통해서 관련 데이터의 메타정보를 확인할 수 있었습니다.
하지만, 메타정보가 필요 없는 경우라면 단순히 "help" 인자를 포함하지 않고, URL를 호출하시면 됩니다.
 

메타정보와 데이터 영역 구분

 

데이터를 저장하기에 앞서, 데이터가 어떻게 파싱되어있는지 확인이 필요합니다.
필자가 초기 생각했던 방식은 '탭, 띄어쓰기 4칸으로 구분되어있지않을까?' 싶었는데

확인해 본 결과, 탭도 띄어쓰기 4칸도 아니였습니다. 일부 데이터의 경우에는 띄어쓰기 3칸, 2칸 등 일괄되지 않게 파싱 되어 있습니다.
이런 경우, "공백"으로 데이터를 구분할 수 있습니다.

데이터 구분이 공백임을 확인했으니, sep 매개변수를 통해서 데이터를 파싱해서 저장하도록 하겠습니다.

import io
import requests
import pandas as pd

# 지상관측 데이터 확인
url = "https://apihub.kma.go.kr/api/typ01/url/kma_sfctm3.php?tm1=202401010000&tm2=202401022300&stn=108&authKey=인증키"
response = requests.get(url)  # GET 요청

# 데이터 공백으로 파싱하여 저장
data = pd.read_csv(io.StringIO(response.text), sep='\s+', skiprows=2)

# DataFrame을 CSV 파일로 저장
data.to_csv('./20240101_20240102_direct.csv', index=False)

 


해당 포스팅은 "오픈 API 활용한 실시간 기상데이터 수집" 관련 3번째 글입니다.

🧑🏻‍💻 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
반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.