부동산 매물 정보 수집하기 – 부동산 데이터 네이버 부동산 크롤링 및 가공 #1 ㅣ 네이버 부동산 데이터는 매우 유용하게 활용할 수 있지만, 원하는 형태로 변환된 자료를 얻는 것은 상당히 어렵습니다. Excel의 VBA를 사용하여 데이터를 변환하는 방법이 소개되곤 하지만, Python의 뛰어난 기능을 통해 실시간 부동산 매물 정보를 크롤링하는 구체적인 방법을 공부하고 있습니다.
이제 네이버 부동산에서 방대한 데이터를 Python을 활용해 필요한 정보를 직접 수집해 보겠습니다.
부동산 매물 정보 수집하기 – 부동산 데이터 네이버 부동산 크롤링 및 가공 #1
네이버 부동산은 PC 환경과 모바일 환경으로 나누어져 서비스 되어지고 있으며,각각의 환경을 크롤링하는 방식도 차이가 있습니다. 두 방식 중에서 모바일 환경을 크롤링하는 방식이 보여지는 정보가 적어서 보다 유리합니다.
PC환경
모바일환경
특정 아파트 단지의 매물 정보 가져오기
아래 이미지에서는 http://m.land.naver.com에 접속하여 ‘상암월드컵파크4단지’의 매물과 관련된 정보를 보여준다. 여기서 중요한 요소는 아파트 단지의 고유 식별자인 ‘23620’과 거래 방식을 나타내는 코드 ‘A1:B1:B2 ‘입니다. 각 코드의 의미는 A1은 매매, B1은 전세, B2는 월세, 그리고 B3는 단기임대에 해당합니다.
예를 들어, 다음 주소에서 매물 정보를 확인할 수 있습니다.다https://m.land.naver.com/complex/info/23620?tradTpCd=A1:B1:B2:B3&ptpNo=1&bildNo=&articleListYN=Y
특정단지의 매물값을 가져오는 코드를 다시 작성해보면 아래와 같습니다.
import requests
import json
import pandas as pd
URL = "https://m.land.naver.com/complex/getComplexArticleList"
parameter = {
'hscpNo': '23620', # 상암월드컵파크4단지 고유번호
'tradTpCd': 'A1:B1:B2', # 거래방식 3가지
'order': 'spc_', # 면적별 정열
}
header = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36 Edg/112.0.1722.39',
'Referer': 'https://m.land.naver.com/'
}
page = 0
lands = []
while True:
page = page + 1
parameter['page'] = page
response = requests.get(URL, params=parameter, headers=header)
if response.status_code != 200:
print('invalid status: %d' % response.status_code)
break
data = json.loads(response.text)
result = data['result']
if result is None:
print('no result')
break
for item in result['list']:
lands.append([item['tradTpNm'], item['bildNm'], item['flrInfo'], item['prcInfo'], item['spc1']])
if result['moreDataYn'] == 'N':
break
print(pd.DataFrame(lands))
다음편에서는 각 아파트별 정보를 얻을 수 있는 파이썬 코드를 알아보도록 하겠습니다.