뱁새유니버스

국토교통부에서 부동산 실거래목록을 실시간으로 표시해보자! 파이썬 공공데이터포털 API 부동산 데이터 가져오기

by 뱁새유니버스

1. 개요

파이썬으로 프로그램을 개발하는건 마치 레고 조립하는 것과 같습니다. 

자동차를 만들고 싶으면 프레스 모듈, 차체BIW 모듈, 도장 모듈, 의장 모듈, 엔진 모듈 등을 import해서 개인용 자동차를 만들면 됩니다. 물론 말처럼 간단하게 개발하기 쉽지 않지만, 인류 역사상 지금처럼 쉽게 프로그램을 만든 적은 없습니다.

이번 시간엔 국토교통부에서 부동산 실거래목록을 계속 받아오는 코드를 소개해드리려합니다. 굉장히 쉽습니다. 천천히 따라하기만 하면 누구나 국토교통부에서 부동산 실거래가를 지도에 표기할 수 있습니다~ 함께 확인해보시죠ㅎㅎ

 

2. 내용

(1) API 인증키 발급 신청하기 

API는 응용프로그램 인터페이스입니다. 제가 국토교통부에서 부동산 실거래목록을 받고 싶습니다. API를 통해 받을 수 있습니다. 데이터를 어떻게 받아야할까요? 국토교통부에 요청합니다. API인증키 주세요! 이렇게요!

국토교통부 상업업무용 부동산 매매 신고 자료 xml 오픈 API를 아래 사이트에서 신청 후 받아볼 수 있습니다! 참 쉽죠?

https://www.data.go.kr/data/15057267/openapi.do 

 

국토교통부_상업업무용 부동산 매매 신고 자료

부동산 거래신고에 관한 법률에 따라 신고된 주택의 실거래 자료를 제공

www.data.go.kr

회원가입 및 로그인 후  검색창에 "아파트매매 실거래자료" 라고 검색하면 아래와 같이 오픈API 목록이 표기됩니다.

"국토교통부_아파트매매 실거래자료" 활용신청 버튼을 클릭합니다.

 

활용신청 버튼을 클릭하고 신청 양식에 내용을 작성합니다. 자세하게는 첨부파일, 상세기능정보 선택 등이 있습니다. 

상세기능정보 선택을 확인하고 라이선스 표시 이용허락범위 제한 없음 동의를 한 뒤 활용신청 버튼을 클릭합니다.

 

그러면 바로 인증키가 발급됩니다. (공공데이터 만세!)

아래로 내려가 <활용신청 상세기능정보>에서 미리보기를 통해 요청변수에 따른 결과값을 미리 볼 수 있습니다. 

지역코드(5자리)와 실거래자료 계약년월(YYYYMM) 6자리, ServiceKey 인증키를 입력하면 아래와 같이 XML형태의 데이터를 받아볼 수 있습니다.

URL구조는  이렇게 생겼습니다.

http://openapi.molit.go.kr:8081/OpenAPI_ToolInstallPackage/service/rest/RTMSOBJSvc/getRTMSDataSvcAptTrade?serviceKey=OFVeixbMA%2FOZK5FmoeeoBu4QrqqlQIMpkFg%2FGMoBK%2BdruBO0npH1lupBMMUuMQ2U6w7jS0sIRBLitEE0PIvX9Q%3D%3D&LAWD_CD=11110&DEAL_YMD=201512 

법정동코드 API도 있습니다. 법정동 코드 API도 OpenAPI를 통해 동일한 방식으로 가져올 수 있습니다.

(2) 파이썬에서 api 호출 및 dataframe으로 표현하기

API(Application Programming Interface)는 애플리케이션 프로그램 인터페이스입니다. 말이 어렵지만 두 서비스간 연결을 돕는 역할을 하는 친구입니다. 제가 국토교통부에서 부동산 실거래목록을 받고 싶습니다. API를 통해 받을 수 있습니다. 데이터를 어떻게 받아야할까요? API로 호출하면 됩니다. 국토교통부에서 받은 API키값과 함께! 아래 코드를 복사하여 파이썬에서 실행합니다.

import requests
import xmltodict
import pandas as pd
import json
from datetime import datetime

def get_lawd_cd(address):
    url = "http://apis.data.go.kr/1741000/StanReginCd/getStanReginCdList"
    key = "인증받은 decoding api키값"
    params = {"serviceKey": key, "pageNo": "1", "numOfRows": "3", "type": "json", "locatadd_nm": address}
    r = requests.get(url, params=params)
    _json = r.json()
    results = _json.get("StanReginCd")
    if len(results) > 0:
        return results[1].get("row", [])[0].get("region_cd")[0:5]
    return None

LAWD_CD = get_lawd_cd("경기도 과천시")
DEAL_YMD = "202210"
key = "인증받은 decoding api키값"
url = "http://openapi.molit.go.kr:8081/OpenAPI_ToolInstallPackage/service/rest/RTMSOBJSvc/getRTMSDataSvcAptTrade"
params = {"serviceKey": key, "LAWD_CD": LAWD_CD, "DEAL_YMD": DEAL_YMD}


req = requests.get(url, params=params)
result = xmltodict.parse(req.text)
items = result.get("response").get("body").get("items").get("item")

jsonString = json.dumps(items) #list를 json방식으로 업데이트

df = pd.DataFrame(items)
display(df)

알맞은 api인증키값과 법정동을 넣으셨다면 아래와 같은 결과값이 도출됩니다.

 

3. 마치며

이번 시간엔 국토교통부에서 제공하는 공공데이터를 기반으로 데이터를 dataframe으로 표현하는 것까지 해봤습니다. 

공공데이터포털의 모든 데이터를 위와 같은 방식으로 호출하여 가져올 수 있습니다. 출산율, 고용률, 물가지수 등등 말이죠. 다음시간엔 부동산 실거래가를 folium(지도 오픈 라이브러리)을 활용해 지도에서 위 dataframe에 표현된 데이터를 표기하는 것을 진행해볼까 합니다.

감사합니다.

반응형

블로그의 정보

가슴이 웅장해지는 모든것

뱁새유니버스

활동하기