주제: [지상관측] 실시간 기상자료 수집코드 구현하기(코드 포함)
수정: 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 이해하기
우선, 이전에 사용했던 URL은 "help" 인자를 통해서 관련 데이터의 메타정보를 확인할 수 있었습니다.
하지만, 메타정보가 필요 없는 경우라면 단순히 "help" 인자를 포함하지 않고, URL를 호출하시면 됩니다.
- # 메타정보 포함 URL
https://apihub.kma.go.kr/api/typ01/url/kma_sfctm3.php?tm1=202401010000&tm2=202401022300&stn=108&help=1&authKey=인증키 - # 메타정보 불포함 URL
https://apihub.kma.go.kr/api/typ01/url/kma_sfctm3.php?tm1=202401010000&tm2=202401022300&stn=108&authKey=인증키
데이터 파싱 형태 파악
데이터를 저장하기에 앞서, 데이터가 어떻게 파싱되어있는지 확인이 필요합니다.
필자가 초기 생각했던 방식은 '탭, 띄어쓰기 4칸으로 구분되어있지않을까?' 싶었는데
확인해 본 결과, 탭도 띄어쓰기 4칸도 아니였습니다. 일부 데이터의 경우에는 띄어쓰기 3칸, 2칸 등 일괄되지 않게 파싱 되어 있습니다.
이런 경우, "공백"으로 데이터를 구분할 수 있습니다.
sep 매개변수로 데이터 구분하여 저장
데이터 구분이 공백임을 확인했으니, 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
반응형
'Python > 5️⃣ 웹' 카테고리의 다른 글
[HTTP 상태코드] 404 오류: 에러의 정체는? (0) | 2024.07.12 |
---|---|
[기상청 API 허브] 위성 데이터 다운받기 (코드 포함) (7) | 2024.03.14 |
[기상청 API 허브] 지상관측 데이터 다운받기 (1/2) (0) | 2024.03.01 |
[기상청 API 허브] API 활용한 기상자료 쉽게 다운받기 (32) | 2024.02.25 |