본문 바로가기

Python

[Python] JSON 데이터 파싱

어제는 파이썬으로 XML데이터를 파싱했었는데

오늘은 JSON데이터HTTP 통신을 하여 

데이터를 문자열로 Parsing해보려고합니다.

먼저 HTTP 통신은 어제와 했던 과정이 같습니다.

 

from http.client import HTTPSConnection
from urllib.parse import quote
from json import loads

# 도시 이름 : 입력 (영어)
# 요청파라미터 추가 O
# 응답 내용 출력까지

hc = HTTPSConnection("api.openweathermap.org")
q = input("도시 이름 (영어):")

print(q)

url = f"/data/2.5/weather?q={q}&appid={API Key}"
url += "&units=metric&lang=kr"
print(url)
hc.request("GET", url)
res = hc.getresponse()
resBody = res.read()
print(resBody.decode())

 

Current weather data - OpenWeatherMap

 

Current weather data - OpenWeatherMap

 

openweathermap.org

 

 

저는 OpenWeatherMap이라는 사이트에서

날씨 정보가 담긴 API 주소를 사용했습니다.

해당 내용을 resBody에 담아서 출력까지 진행했습니다.

 

url += "&units=metric&lang=kr"

 

이때 요청파라미터로

units=metric => 섭씨온도로 출력

lang=kr => 한국어로출력

을 넣었습니다.

한국어로 변환했으니 요청을 받은 객체에

decode()함수를 써서 decoding까지 해줘야합니다.

 

{"coord":{"lon":126.9778,"lat":37.5683},"weather":[{"id":701,"main":"Mist","description":"박무","icon":"50d"}],"base":"stations","main":{"temp":3.76,"feels_like":1.86,"temp_min":1.78,"temp_max":3.76,"pressure":1029,"humidity":60,"sea_level":1029,"grnd_level":1019},"visibility":9000,"wind":{"speed":2.06,"deg":220},"clouds":{"all":20},"dt":1741307343,"sys":{"type":1,"id":8105,"country":"KR","sunrise":1741298137,"sunset":1741339862},"timezone":32400,"id":1835848,"name":"Seoul","cod":200}

 

이러면 이런식으로 날짜데이터가 넘어온 것을 확인할 수 있습니다.

 

다음은 넘어온 JSON 데이터를 파이썬의 문자열로 바꾸는 방법을 알아보겠습니다.

XML데이터에서는 fromstring을 사용했지만,

JSON데이터는 loads라는 기능을 사용해야합니다.

 

weather = loads(resBody) #JSON 데이터를 파이썬의 문자열로 변환 import json
print(weather)

 

이렇게 하면 JSON데이터가 문자열 형식으로 바뀌게 됩니다.

이 데이터를 원하는 데이터로 Parsing하려면

먼저 JSON 데이터의 구조를 알아야하는데

 

 

weather라는 데이터안에 description 데이터를 가져오려면

weather 데이터가 어디에 있는지 알아야 합니다.

weather는

 

1. {} dict 자료형 안에 

2. weather라는 list의 0번째 리스트의

3. {} dict 자료형 안에 description

 

있습니다.

따라서 다음과 같이 접근할 수 있겠네요.

 

print(weather["weather"][0]["description"])

 

출력을 확인해보겠습니다.

 

 

지금은 도시를 바꿔서 입력했더니

연무가 출력되네요.

 

JSON 데이터를 가져와서 Parsing까지 해봤습니다.

'Python' 카테고리의 다른 글

[Python] DB에 Insert하기  (0) 2025.03.07
[Python] 책 API의 JSON 데이터 가져오기 (feat. Kakao Dev)  (1) 2025.03.07
[Python] 파이썬으로 Http 통신 하는 법  (0) 2025.03.06
[Python] Datetime  (0) 2025.03.06
[Python] f-string  (0) 2025.03.06