공공데이터포털에는 각종 데이터가 무료로 제공되고 있다.
국토교통부_아파트매매 실거래 상세 자료항목을 통해 아파트 거래 내역을 추출해보자.
법정동 코드 조회사이트에서 원하는 지역의 코드 값을 찾아 입력해준다. (강남구: 11680)
조회하고자 하는 연도를 입력해준다. (2021)
# 모듈 임포팅
import requests
import bs4
#인증키 입력 (공공 데이타 사이트에서 발급 및 로그인 후 확인)
encoding = '본인의 API키(인코딩)'
decoding = '본인의 API키(디코딩)'
# 법정동 코드
areacode = 11680 # 강남구
# 조회기간 설정 변수
month_digit = ['01','02','03','04','05','06','07','08','09','10','11','12']
search_year = '2021'
# 총 거래내역
count = []
# 추출 모듈
for each in month_digit:
yearmonth = search_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' : yearmonth }
response = requests.get(url, params=params).text
xmlobj = bs4.BeautifulSoup(response, 'lxml-xml')
rows = xmlobj.findAll('item')
j = 0
count.append(len(rows)) # 해당 기간의 거래내역 개수 저장
# 거래별 세부 항목 정리
while j <= len(rows)-1:
columns = rows[j].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
j += 1
print(f'총 {sum(count)}개의 거래내역이 확인되었습니다.')
실행 결과는 다음과 같다.
[플그래밍/파이써언] - [파이썬] 폴더 내 파일 확장자별로 분류하기
[플그래밍/파이써언] - [파이썬] 판다스 CSV > XLSX 엑셀 변환
[플그래밍/파이써언] - [파이썬] PDF 파일 합치기 (PyPDF2)
[플그래밍/파이써언] - [파이썬] 브라우저 새로고침 (selenium)
[플그래밍/파이써언] - [파이썬] 코로나 라이브 확진자 데이타 추출하기 (selenium)
728x90
'플그래밍 > 파이써언' 카테고리의 다른 글
[파이썬] 7로 나누어 떨어지고 5의 배수가 아닌 숫자 찾기 (0) | 2022.01.20 |
---|---|
[파이썬] 폴더 내 파일 확장자별로 분류하기 (0) | 2022.01.16 |
[파이썬] 판다스 CSV > XLSX 엑셀 변환 (0) | 2021.06.28 |
[파이썬] 판다스 엑셀 파일 만들기 (0) | 2021.06.28 |
[파이썬] PDF 파일 합치기 (PyPDF2) (0) | 2021.06.21 |