1) API Key 발급받기
2) API 사용해 데이터 끌어와 분석
import requests
from bs4 import BeautifulSoup
# 발급받은 API 키 입력하기
service_key = 'API key 입력'
# base_url은 사이트에서 가져올 수 있음
base_url = 'http://openapi.molit.go.kr/OpenAPI_ToolInstallPackage/service/rest/RTMSOBJSvc/getRTMSDataSvcNrgTrade'
locate_code = '11110' # 종로구
contract_date = '202112' # 2020년 12월에 거래된 내역 조회
request_url = base_url + '?' + "serviceKey=" + service_key + '&LAWD_CD=' + locate_code + '&DEAL_YMD=' + contract_date
print(request_url) # 아래 링크를 클릭해 결과가 잘 나오는지 확인
response = requests.get(request_url).content
soup = BeautifulSoup(response, 'lxml-xml') # Parser가 바뀜
print(soup)
3) 필요한 Tag만 꺼내기
items = soup.find_all('item') # XML의 <~>는 HTML의 Tag와 같이 접근 가능
items[0]
4) 꺼낸 Tag 내부에서 개별적으로 꺼내쓰기
for item in items:
try:
print('지역 코드 :', item.find('지역코드').get_text())
print('거래 일자 :', item.find('년').get_text(), item.find('월').get_text(), item.find('일').get_text())
print('거래 금액 :', item.find('거래금액').get_text())
print('건물 면적 :', item.find('건물면적').get_text())
print('대지 면적 :', item.find('대지면적').get_text())
print('건축 년도 :', item.find('건축년도').get_text())
print('건물 주용도 :', item.find('건물주용도').get_text())
print('용도지역 :', item.find('용도지역').get_text())
print('시군구 :', item.find('시군구').get_text())
print('법정동 :', item.find('법정동').get_text())
print('유형 :', item.find('유형').get_text())
print()
except:
# 위 항목 중 하나라도 빠져있으면 해당 항목은 .get_text()가 불가하므로 에러가 발생합니다.
print()
pass # 위 항목 중 하나라도 빠져있으면 출력에서 아예 제외합니다.
5) 데이터프레임으로 정리
loc_code = []
loc = []
date = []
price = []
building_usage = []
for item in items:
try:
loc_code.append(item.find('지역코드').get_text())
loc.append(item.find('시군구').get_text() + item.find('법정동').get_text())
date.append(item.find('년').get_text() + item.find('월').get_text() + item.find('일').get_text())
price.append(item.find('거래금액').get_text())
building_usage.append(item.find('건물주용도').get_text())
except:
pass
import pandas as pd
df = pd.DataFrame({'지역코드':loc_code,
'부동산 위치':loc,
'거래 일자':date,
'거래 금액':price,
'부동산 용도':building_usage})
df.head()
'멋쟁이 사자처럼 AI SCHOOL 5기 > Today I Learned' 카테고리의 다른 글
[3주차 총정리] pd.Series 특징 총정리 (value_counts, plot, replace, 왜도/첨도) (0) | 2022.03.30 |
---|---|
[3주차 총정리] np.array 특징 총정리 (list와의 차이점, 기초함수) (0) | 2022.03.30 |
[3주차 총정리] 웹스크래핑, table 태그 설명 (네이버 상승주) (0) | 2022.03.29 |
[3주차 총정리] Post Request 기반의 웹사이트 크롤링 (서울상권분석서비스) (0) | 2022.03.29 |
[3주차 총정리] Wadis 마감 상품 재고 체크 & 메일 발송 크롤링 (0) | 2022.03.29 |