데이터를 저장하기에 앞서, 데이터가 어떻게 파싱되어있는지 확인이 필요합니다. 필자가 초기 생각했던 방식은 '탭, 띄어쓰기 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)