Kakao API로 도서 검색 후 결과를 엑셀에 저장하기 [디딤돌 pYTHON]

안녕하세요. 언제나 휴일에 언휴예요.

디딤돌 pYTHON에서 네이버 검색 API를 이용하여 도서 검색 후 결과를 엑셀로 저장하는 글이 있습니다.

해당 글에서 사용한 서비스는 Xml 방식의 도서 검색 서비스였습니다.

최근에 많은 곳에서 Json 방식으로 서비스하는 곳이 늘어나는 추세입니다.

Kakao 개발자센터에서 제공하는 검색 API는 Json 방식만 제공합니다.

이번 실습은 Json 방식으로 서비스하는 Open API를 활용하는 예제입니다.

전체적인 방법은 Xml 방식을 사용하는 것과 큰 차이가 없습니다.

동영상 강의를 참고해 주세요.

소스 코드

# https://ehpub.co.kr
# 미래 실험실 pYTHON
# pandas로 엑셀 파일에 기록하기 - 카카오 도서 검색 API 요청 결과

import urllib.request
import json
import pandas as pd

def searchbook(title):
    rest_api_key = "[Kakao에서 발급받은 REST API 키]"
    url = "https://dapi.kakao.com/v3/search/book?target=title"
    query = "&query="+urllib.parse.quote(title)
    request = urllib.request.Request(url+query)
    request.add_header("Authorization","KakaoAK "+rest_api_key)
    response = urllib.request.urlopen(request)
    rescode = response.getcode();
    if(rescode == 200):
        return response.read().decode('utf-8')
    else:
        return None
    
def showitem(post):
    print("제목:"+post['title'])
    print("설명:"+post['contents'])
    print('url:'+post['url'])
    print("==============================")
def makeexcel(jres,path):
    result=[]
    for post in jres['documents']:
        result.append([post['title']]+[post['contents']]+[post['url']])
    table = pd.DataFrame(result,columns = ('title','contents','url'))
    table.to_excel(path);

def main():
    res = searchbook(input("질의:"))
    if(res == None):
        print("검색 실패!!!")
        exit()
    jres = json.loads(res)
    if(jres == None):
        print("json.loads 실패")
        exit()
    for post in jres['documents']:
        showitem(post)
    makeexcel(jres,"d:\\data\\py\\data.xlsx")

if __name__ == '__main__':
    main()