[파이썬] 카카오 API 활용 - 구주소로 신주소 또는 신주소로 구주소 찾기
본문 바로가기
IT/파이썬

[파이썬] 카카오 API 활용 - 구주소로 신주소 또는 신주소로 구주소 찾기

by SageIN 2022. 1. 3.
반응형

몇줄 안되는 코딩으로 업무의 효율을

높일수 있는 방법이 파이썬 스크립트 입니다.

각 업무환경이 다르니 가장 베이직 한 로직만 구현할께요.

 

연말 연초에 우편이나 택배를 발송 할 경우가 많고 

하니 주소를 검증해야 할 경우가 생기더라구요. 

그래서 이번 포스팅은 주소 API 사용법을 다뤄 볼까 합니다.

 

주소를 제공하는 API는 다양한 곳에서 하고 있습니다.

juso.go.kr 에서도 하고. 카카오, 우체국...등등등 

 

그중에서도 카카오의 서비스를 이용해볼까 합니다.

 

1. 카카오 API 키 발급받기.

카카오의 주소 api를 쓰기위해서는 api 키를 발급 받아야 하는데요

https://developers.kakao.com/

접속합니다. 

 

카카오 계정으로 로그인을 한 후에.

 

내 애플리케이션 -> 애플리케이션 추가하기를 합니다.

 

요런 화면이 나오면 적당한이름을 넣고

개인 프로젝트이니 그냥 "개인" 넣어줍니다.

저장을 하고. 방급 작성한 APP을 클릭하면

 

앱키가 생성되어 있는 것을 확인 할 수 있습니다. 

REST API키를 복사합니다. 그러면 준비는 끝 났습니다. 

 

2. 스크립트 작성하기

코딩을 시작해봅시다.

 

 

 

엑셀에 지번주소와 도로명 주소가 섞여 있어 

도로명 주소와 지번주소를 검증도 하면서 분류작업을 해야 하는 경우라 가정하고 

코드를 작성해보면

 

api와 통신을 하기 위해 requests 모듈

엑셀을 읽고 쓰기위해 openpyxl  모듈

통신을 쉬엄쉬엄 하라고 time 모듈

 

세가지 모듈만 사용하면 될 것 같습니다.

 

import requests
import openpyxl as xl
import time


# api 정보 셋팅
url = "https://dapi.kakao.com/v2/local/search/address.json"
REST_API_KEY = "발급받은 REST API키 "
headers = {"Authorization": "KakaoAK {}".format(REST_API_KEY)}


# 엑셀파일 읽기
wb = xl.load_workbook("address.xlsx", data_only=True)


# 자료가 있는 시트 열기
ws = wb.worksheets[0]


# 루프돌면서 검증할 주소 읽기
for row, item in enumerate(ws.rows):
    if row > 0: #  두번째 행부터 
        addr = str(item[1].value)
        params = {"query": "{}".format(addr)} # 주소정보를 파라미터에  담습니다.
        resp = requests.get(url, params=params, headers=headers) # 해더와 파라미터 정보를 넣어 get 타입으로 전송합니다.

       documents = resp.json()["documents"] # json으로 받은 파일을 파싱하기.

       if len(documents) > 0: # json을 파싱후 documents 에 데이터가 있을 경우에만
            address = documents[0]['address']['address_name'] # 지번주소
            road_address = documents[0]['road_address']['address_name'] # 도로명 주소
            ws.cell(row+1, 3, road_address ) # 3번째 열에 값 엑셀쓰기
            ws.cell(row+1, 4, address) # 3번째 열에 값 엑셀쓰기

        time.sleep(0.3) # 너무 빨리 쿼리해서 죽을수도 있으니 쉬는 시간을 줍시다.

wb.save('address.xlsx') # 동일한 파일에 저장
wb.close() # 엑셀파일 다 썼으니 닫기.

 

전보단 길지만 그래도 짧은 코드가 완성되었습니다.

결과를 확인해보면 아래와 같이 잘 들어가 있죠.

 

 

 

간단한데  반복적이고 시간 오래걸리는 고민해보세요. 한시간 일하고 7시간 놀수 있습니다.(저녀석 일잘하네.. 일을 더 줄 확율이 높겠지만...)

그래도 파이썬하세요.

 

반응형

댓글


TOP

Designed by 티스토리