본문 바로가기

Python

[Python] 책 API의 JSON 데이터 가져오기 (feat. Kakao Dev)

이번 시간에는 JSON 데이터 Parsing의 복습 개념으로

카카오 DEV에서 API로 된 JSON데이터를 가져와서

Pasing까지 해보도록 하겠습니다.

 

REST API | Kakao Developers 문서

 

Kakao Developers

카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.

developers.kakao.com

 

 

저는 책 검색을 해볼 예정인데요.

 

 

요청을 하기 위해서는 Kakao.DEV에서 인증키를 발급받아서

헤더에 인증 코드를 추가해야하고,

 

 

요청 파라미터로 질의어는 필수로 들어가야합니다.

 

그럼 Http통신부터 진행해보겠습니다.

 

q = input("책 이름 : ")
q = quote(q)

url = f"/v3/search/book?query={q}"

headers = {
    "Authorization": "KakaoAK {인증키}",
}

 

먼저 주소에 입력받은 책 이름을 f-string으로 formatting해주었고,

headers라는 dict변수에 인증할 header 코드를 넣어주었습니다.

 

hc = HTTPSConnection("dapi.kakao.com")
hc.request("GET", url,  headers = headers)
res = hc.getresponse()
resBody = res.read()

 

다음은 서버 주소를 HTTPSConnection을 사용해서 연결해주었고,

GET방식으로 인증 헤더를 붙여서 요청하였습니다.

그리고 resBody에 응답받은 데이터를 저장해두었습니다.

 

books = loads(resBody)

 

마지막으로 응답받은 JSON데이터를 문자열로 변환하는 코드도 붙여줍니다.

 

콘솔에 응답이 잘 넘어왔는지 출력도 해줍니다.

 

 

이제 넘어온 JSON데이터의 데이터 구조가 어떤 형식인지 확인해야하는데요.

Kakao DEV의 가이드 문서를 보면 확인할 수 있습니다.

 

 

데이터 구조의 예시인데요.

저는 책 이름과 작가 정보의 데이터만을 Parsing 해보려고합니다.

책 이름에 해당하는 title의 value에 접근해야하는데요.

구조를 살펴보면

dict 자료형 안에 => documents의 0번째 배열 안에 =>dict자료형 안에 있습니다.

따라서 Parsing하려면 코드를 이렇게 짜면 되겠네요.

 

print(books['documents'][0]['title'])
print(books['documents'][0]['authors'])

 

출력

 

데이터 Parsing까지 막힘없이 진행할 수 있었습니다.

긴 글 읽어주셔서 감사합니다!

 

'Python' 카테고리의 다른 글