국토교통부의 API를 통해 아파트 매매 실거래가 구하는 방법을 파이썬으로 구현해보려고 합니다.
1. 먼저 오픈API 인 공공데이터 포털(https://www.data.go.kr/)에 접속 후 가입합니다.
공공데이터 포털
국가에서 보유하고 있는 다양한 데이터를『공공데이터의 제공 및 이용 활성화에 관한 법률(제11956호)』에 따라 개방하여 국민들이 보다 쉽고 용이하게 공유•활용할 수 있도록 공공데이터(Datase
www.data.go.kr
2. 국토교통부 실거래가 정보 > '아파트 매매 실거래 상세자료' 를 클릭합니다.
국토교통부_아파트매매 실거래 상세 자료 | 공공데이터포털 (data.go.kr)
국토교통부_아파트매매 실거래 상세 자료
부동산 거래신고에 관한 법률에 따라 신고된 주택의 실거래 자료를 제공
www.data.go.kr
3. [활용신청] 버튼을 클릭합니다.
4. 아래와 같이 활용목적 선택 및 활용목적 내용을 입력한 후, 라이선스 표시의 이용허락범위 동의 체크 후 [활용신청] 버튼을 클릭합니다.
5. [활용신청] 하면 아래와 같이 표시가 됩니다. '[승인] 국토교통부_아파트매매 실거래 상세 자료' 를 클릭합니다.
6. 아래와 같은 화면이 나오며, 일반 인증키를 받으실 수 있습니다.
7. API 를 어떻게 활용할지는 6번의 기본정보의 데이터명에 있는 [상세설명] 버튼을 클릭하면 아래와 같이 나옵니다.
8. Pycharm 실행 후 python 파일을 생성하여 하기와 같이 코드를 입력 후 실행합니다.
코드 :
import requests
import bs4
# 인증키 입력
encoding = 'Mh45mSa9bTrEqu9HdNvBuYelMlMfdArTBrivw7ExPdSSiiY0IbsWWkGq%2BJCbNkSkWrIqN59QWdXSAnxn1HWQ4Q%3D%3D'
decoding = 'Mh45mSa9bTrEqu9HdNvBuYelMlMfdArTBrivw7ExPdSSiiY0IbsWWkGq+JCbNkSkWrIqN59QWdXSAnxn1HWQ4Q=='
# 법정동 코드
areacode = 11110 # 종로구
# 조회기간 변수
month = ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12']
year = '2022'
# 총 거래내역
count = []
for each in month:
year_month = year + each
# url 입력
url = 'http://openapi.molit.go.kr/OpenAPI_ToolInstallPackage/service/rest/RTMSOBJSvc/getRTMSDataSvcAptTradeDev'
params = {'serviceKey': decoding, 'pageNo': '1', 'numOfRows': '10000', 'LAWD_CD': areacode, 'DEAL_YMD': year_month}
response = requests.get(url, params=params).text
xmlobj = bs4.BeautifulSoup(response, 'lxml-xml')
rows = xmlobj.findAll('item')
i = 0
count.append(len(rows)) # 해당 기간의 거래내역 개수 저장
# 거래별 세부 항목 정리
while i <= len(rows) - 1:
columns = rows[i].find_all()
# 세부 항목 추출
for item in columns:
if item.name == "아파트":
complex = item.text
if item.name == "거래유형":
type = item.text
if item.name == "년":
year = item.text
if item.name == "월":
month = item.text
if item.name == "일":
day = item.text
if item.name == "전용면적":
size = item.text
if item.name == "층":
floor = item.text
if item.name == "거래금액":
amount = item.text.strip()
try:
# 해당 기간 거래 전체 조회
print(f'{year}년 {month}월 {day}일 | {size}m\u00b2 | {floor}층 | {amount}만원 | {complex} | {type}')
except NameError: # 에러
pass
i += 1
print(f'총 {sum(count)}건이 거래됐습니다.')
결과값 :
'프로그래밍 > python' 카테고리의 다른 글
법정동 코드는 어디서 확인할까? (0) | 2023.02.27 |
---|---|
네이버 영화 리뷰 타이틀 크롤링 (0) | 2023.02.24 |
Mac에서 Python 기본 버전 변경하는 방법 (0) | 2022.03.16 |