본문 바로가기
코딩 연습/코딩배우기

공공데이터 포털 api 사용법 - 파이썬으로 아파트 단지 코드 추출

by good4me 2022. 1. 23.

goodthings4me.tistory.com

※파이썬으로 아파트 표준 데이터(공동주택 기본 정보) 관련 정보를 얻기 위해 공공데이터 포털에서 제공하는 단지 코드를 API를 활용해보았다. 그런데 전국에 있는 아파트 전체에 대한 코드가 아니라 관리비 공개 의무 단지만을 대상으로 하는 코드만 제공하는지 실제 아파트 숫자보다 적었다.

 

 

공공데이터 포털 오픈 API로 아파트 단지 코드 추출해보기

공동주택 관리비의 투명성 등을 확보한다는 취지로 지정된 "관리비 공개 의무 단지"는 다음과 같다고 되어있다. 

☞ 참고 : 공동주택관리 정보시스템 http://www.k-apt.go.kr/cmmn/kaptworkintro.do

  • 300세대 이상 공동주택, 
  • 승강기가 설치되었거나 중앙(지역) 난방방식을 갖춘 150세대 이상인 공동주택, 
  • 주택 150세대 이상인 주상복합 아파트,
  • 그 외 입주자 2/3 이상이 의무관리대상 지정에 서면 동의한 공동주택, 공공임대 및 민간임대주택

관리비 공개 의무 아파트 현황

 

"국토교통부_공동주택 단지 목록 제공 서비스" 오픈 API로 추출

import requests
import xmltodict
import json

def apt_danji(sido):
    url = 'http://apis.data.go.kr/1613000/AptListService2/getSidoAptList'

    param ={'serviceKey' : service_dkey, 'sidoCode' : sido, 'pageNo' : 1, 'numOfRows' : '1' }
    r = requests.get(url, params=param)

    xmlData = r.content.decode('utf-8')
    parseData = xmltodict.parse(xmlData)
    jData = json.loads(json.dumps(parseData))
    # print(jData)
    rows = jData['response']['body']['totalCount']
    print(f'단지 코드수 : {int(rows):,} 개')

    pages = int(int(rows)/100) + 1
    print(f'pages: {pages}')

    row_cnt = 1
    for i in range(1, pages + 1):
        params ={'serviceKey' : service_dkey, 'sidoCode' : sido, 'pageNo' : i, 'numOfRows' : '100' }

        response = requests.get(url, params=params)
        # print(response.content)  # ascii

        xml_data = response.content.decode('utf-8')
        # print(xml_data)

        parse_data = xmltodict.parse(xml_data)
        # print(parse_data)

        ord_data = parse_data['response']['body']['items']['item']
        print(ord_data)
        print(f'page: {i} End\n{"=" * 50}')

        try:
            ## json() 활용하여 데이터 변환 
            jdata = json.loads(json.dumps(ord_data))
            
            for code_data in jdata:
                print(f'row_cnt: {row_cnt}\n{code_data}\n')
                row_cnt += 1

        except Exception as e:
            print(f'Error: {e}\n')
            break

sido_code = 50
apt_danji(sido_code)

- sido_code 50은 제주특별자치도, 아래는 각 지역의 "시도 코드"임

- 단지 코드수는 116개

- pages 수를 구하기 위해 requests.get()을 사용했고, 이후 해당 페이지수만큼 for 문으로 순환하면서 코드를 추출함

 

good4me.co.kr

 

- 추출한 데이터의 OrderedDict() 내용은

[OrderedDict([('as1', '제주특별자치도'), ('as2', '제주시'), ('as3', '일도이동'), ('bjdCode', '5011010200'), ('kaptCode', 'A69001201'), ('kaptName', '삼주')]), OrderedDict([('as1', '제주특별자치도'), ('as2', '제주시'), ('as3', '일도이동'), ('bjdCode', '5011010200'), ('kaptCode', 'A69001202'), ('kaptName', '혜성대유')]), OrderedDict([('as1', '제주특별자치도'), ('as2', '제주시'), ('as3', '일도이 
동'), ('bjdCode', '5011010200'), ('kaptCode', 'A69001203'), ('kaptName', '일도우성1단지')]),....

 

- json으로 파싱해서 추출하면, 다음과 같은 형태임

{'as1': '제주특별자치도', 'as2': '제주시', 'as3': '일도이동', 'bjdCode': '5011010200', 'kaptCode': 
'A69001201', 'kaptName': '삼주'}

 

- 위 소스코드로 추출한 아파트 단지 코드 다운로드 필요시, 아래에서 받으면 됨

아파트 단지 코드 샘플

※ 자료 다운로드 : 아파트 단지목록 및 단지 코드 (2022.11.29. 기준 업데이트 자료)

 

☞ 관련 포스팅 더보기

공동주택 단지코드(아파트 코드) 추출 - 파이썬 API 활용

 

공동주택 단지코드(아파트 코드) 추출 - 파이썬 API 활용

공동주택 단지코드(아파트 코드)가 필요하여 공공데이터 포털(www.data.go.kr)에서 데이터를 추출하는 API 개발 언어 중 편리하다고 할 수 있는 파이썬(Python)을 통해 아파트 단지 목록과 단지 코드(공

goodthings4me.tistory.com

 

 

 

 

댓글