Python을 사용하여 부동산 데이터를 스크랩하기 위한 데이터 스크랩 도구
게시 됨: 2019-08-12세계 최고의 부동산 사이트는 귀중한 데이터의 보고입니다. 인기 있는 미국 부동산 사이트의 데이터베이스에는 1억 개 이상의 주택에 대한 정보가 포함될 수 있습니다. 이러한 주택에는 판매, 임대 또는 현재 시장에 나와 있지 않은 주택이 포함됩니다. 부동산 데이터를 스크랩하면 "Zestimates"라는 임대 및 부동산 견적에 대한 데이터도 제공됩니다. 그것은 소유주와 고객이 향후 몇 년 동안 부동산 가격을 추정함으로써 더 나은 계획을 세우는 데 도움이 됩니다.
부동산을 구입하거나 임대할 때 가장 먼저 떠오르는 것이 가격 비교라는 것을 알고 있습니다. 이러한 주택 사이트는 해당 지역의 모든 목록과 가격 비교는 물론 주택 유형, 방 수, 크기, 간단한 설명 등과 같은 기본 정보를 제공합니다.
부동산 사이트에서 데이터를 크롤링하는 이유는 무엇입니까?
대형 부동산 목록 회사는 전체 지역을 대상으로 수백만 개의 부동산에 대해 작업합니다. 그러나 부동산 중개인의 경우 직접 수동으로 데이터를 수집하는 대신 주요 부동산 목록 웹사이트에서 데이터를 더 잘 크롤링할 수 있습니다.
또한 기계 학습 모델을 구축하여 부동산 가격을 예측하고 예측을 Zillow의 Zestimates와 비교하고 어느 것이 실제 값에 더 좋거나 더 가까운지 확인할 수 있습니다.
Python을 사용하여 부동산 데이터를 스크랩하는 방법?
이전의 "크롤링 또는 스케이프 방법" 문서를 따랐다면 컴퓨터에 필요한 설정이 이미 준비되어 있을 수 있습니다. 그렇지 않은 경우 코드로 손을 더럽히기 전에 이 기사에 따라 데이터 스크래핑 파이썬, 해당 패키지 및 텍스트 편집기를 설정하는 것이 좋습니다.
코드는 어디에 있습니까?
많은 고민 없이, 우리는 부동산 목록 웹사이트에서 정보를 추출하는 데 도움이 될 파이썬을 사용하여 부동산 데이터를 스크랩하는 코드를 제공하기로 결정했습니다. 데이터 크롤링 코드는 Python으로 작성되었으며 이후에 실행 방법과 실행 후 무엇을 얻을 수 있는지 보여 드리겠습니다.
[코드 언어 = "파이썬"]
#!/usr/bin/python
# -*- 코딩: utf-8 -*-
urllib.request 가져오기
urllib.parse 가져오기
urllib.error 가져오기
bs4 import BeautifulSoup에서
SSL 가져오기
json 가져오기
수입품
수입 OS
urllib.request에서 가져오기 요청, urlopen
# SSL 인증서 오류 무시
ctx = ssl.create_default_context()
ctx.check_hostname = 거짓
ctx.verify_mode = ssl.CERT_NONE
# 사용자 입력
url = input('질로우 하우스 목록 URL을 입력하세요- ')
# 웹사이트가 Mozilla 브라우저를 사용하여 액세스하고 있다고 믿게 만들기
요청 = 요청(url, headers={'사용자 에이전트': 'Mozilla/5.0'})
웹 페이지 = urlopen(req).read()
# 데이터를 쉽게 추출할 수 있도록 html 페이지의 BeautifulSoup 객체를 생성합니다.
수프 = BeautifulSoup(웹페이지, 'html.parser')
html = 수프.prettify('utf-8')
property_json = {}
property_json['Details_Broad'] = {}
property_json['주소'] = {}
# 부동산 목록의 제목 추출
수프.findAll('title')의 제목:
property_json['제목'] = title.text.strip()
부서지다
수프.findAll('meta', attrs={'name': 'description'})의 메타용:
property_json['Detail_Short'] = 메타['내용'].strip()
div의 경우 수프.findAll('div', attrs={'class': 'character-count-truncated'}):
property_json['Details_Broad']['설명'] = div.text.strip()
enumerate(soup.findAll('script',
속성={'유형': '응용 프로그램/ld+json'})):
내가 == 0인 경우:
json_data = json.loads(스크립트.텍스트)
property_json['Details_Broad']['객실 수'] = json_data['numberOfRooms']
property_json['Details_Broad']['바닥 크기(제곱피트)'] = json_data['floorSize']['값']
property_json['주소']['거리'] = json_data['주소']['거리 주소']
property_json['주소']['지역'] = json_data['주소']['주소 지역']
property_json['주소']['지역'] = json_data['주소']['주소지역']
property_json['주소']['우편번호'] = json_data['주소']['우편번호']
내가 == 1인 경우:
json_data = json.loads(스크립트.텍스트)
property_json['$의 가격'] = json_data['오퍼']['가격']
property_json['이미지'] = json_data['이미지']
부서지다
open('data.json', 'w')을 outfile로 사용:
json.dump(property_json, outfile, 들여쓰기=4)
파일로 open('output_file.html', 'wb') 사용:
file.write(html)
print('———-데이터 추출이 완료되었습니다. json 파일을 확인하세요.———-')
[/암호]
위에 주어진 코드를 실행하려면 propertyScraper.py와 같은 확장자를 가진 파일에 저장해야 합니다. 완료되면 터미널에서 다음 명령을 실행합니다.
[코드 언어 = "파이썬"]
파이썬 속성Scraper.py
[/암호]
실행하면 속성 목록의 URL을 입력하라는 메시지가 표시됩니다. 이것은 프로그램에서 실제로 데이터를 크롤링할 웹페이지입니다. 우리는 두 개의 링크를 사용하고 두 속성의 데이터를 스크랩했습니다. 링크는 다음과 같습니다.
- https://www.zillow.com/homedetails/638-Grant-Ave-North-Baldwin-NY-11510/31220792_zpid/
- https://www.zillow.com/homedetails/10-Walnut-St-Arlington-MA-02476/56401372_zpid/
이후 하위 주제에서 주어진 코드를 실행할 때 얻은 JSON 파일입니다.

코드 설명
코드가 어떻게 실행되고 무엇을 반환하는지 알아보기 전에 코드 자체를 이해하는 것이 중요합니다. 평소와 같이 먼저 주어진 URL을 누르고 전체 HTML을 캡처하여 아름다운 수프 개체로 변환합니다. 완료되면 특정 속성이 있는 특정 div, 스크립트, 제목 및 기타 태그를 추출합니다. 이렇게 하면 페이지에서 추출할 수 있는 특정 정보를 정확히 찾아낼 수 있습니다.
각 속성에 대한 이미지 링크도 추출한 것을 볼 수 있습니다. 이것은 부동산과 같은 분야에서 이미지가 다른 정보만큼 가치가 있기 때문에 의도적으로 수행되었습니다. 실제로 부동산 목록 페이지에서 여러 필드를 추출했지만 HTML 페이지에는 더 많은 데이터 요소가 포함되어 있습니다. 따라서 HTML 콘텐츠를 로컬에 저장하여 이를 통해 더 많은 정보를 크롤링할 수 있습니다.
우리가 스크랩한 집 목록 중 일부
이전에 언급했듯이 Python에서 스크랩한 데이터가 JSON 형식으로 표시되는 방식을 보여주기 위해 실제로 몇 가지 속성 목록을 크롤링했습니다. 또한 JSON 아래에서 특정 JSON이 있는 속성을 언급했습니다. 이제 스크랩한 데이터 포인트에 대해 이야기해 보겠습니다.
우리는 부동산의 이미지를 얻었습니다(각 부동산에 대한 많은 이미지가 목록 페이지에서 사용 가능하지만, 우리는 각각에 대해 하나씩 얻었습니다. 이는 각 목록의 최상위 이미지입니다). 또한 등록된 가격($), 부동산 제목, 부동산에 대한 마음의 그림을 그리는 데 도움이 되는 설명도 얻었습니다.
이와 함께 주소를 스크랩하여 거리, 지역, 지역 및 우편 번호의 네 부분으로 나눴습니다. 방 수, 층 크기 및 자세한 설명과 같은 여러 하위 필드가 있는 또 다른 세부 정보 필드가 있습니다. 어떤 경우에는 여러 페이지를 스크랩한 후 알게 된 설명이 누락되었습니다.
[코드 언어 = "파이썬"]
{
'세부정보_광범위': {
"방 수": 4,
"바닥 크기(제곱피트)": "1,728"
},
"주소": {
"거리": "638 Grant Ave",
"지역": "노스 볼드윈",
"지역": "뉴욕",
"우편번호": "11510"
},
"제목": "638 Grant Ave, North Baldwin, NY 11510 | MLS #3137924 | 질로”,
“Detail_Short”: “638 Grant Ave , North baldwin, NY 11510-1332는 $299,000에 매물로 나와 있는 단독 주택입니다. 1,728평방피트의 이 집은 침대 4개, 욕실 2.0개 건물입니다. Zillow에서 638 Grant Ave 주택 사진 31장을 찾으세요. Zillow에서 더 많은 부동산 세부 정보, 판매 내역 및 Zestimate 데이터를 확인하십시오. MLS # 3137924”,
"$의 가격": 299000,
"이미지": "https://photos.zillowstatic.com/p_h/ISzz1p7wk4ktye1000000000.jpg"
}
[/암호]
[코드 언어 = "파이썬"]
{
'세부정보_광범위': {
“설명”: “Arlington Heights와 Arlington Center 사이에 있는 Arlington의 Brattle 지역에 위치한 3개의 지붕창 단독 주택. 1920년대에 지어진 이 집은 아름다운 시대적 디테일, 단단한 나무 바닥, 기둥 천장, 전용 일광욕실이 있는 벽난로가 있는 거실, 격식 있는 식당, 3개의 큰 침실, 사무실 및 2개의 완비된 욕실을 제공합니다. 주거 공간을 확장하고 개인 취향에 맞게 개인화하기 위해 이 속성을 향상시킬 수 있는 가능성은 매우 높습니다. Minuteman 통근 자전거 도로, Rt 77 및 79 버스 노선, 학교, 쇼핑 및 레스토랑과 가깝습니다. 시각화하는 데 도움이 되도록 가상 스테이징 및 가상 리노베이션 사진을 제공합니다.”,
"방 수": 4,
"바닥 크기(제곱피트)": "2,224"
},
"주소": {
"거리": "10 Walnut St",
"지역": "알링턴",
"지역": "MA",
"우편번호": "02476"
},
"제목": "10 Walnut St, Arlington, MA 02476 | MLS #72515880 | 질로”,
“Detail_Short”: “10 Walnut St , Arlington, MA 02476-6116은 $725,000에 매물로 등록된 단독 주택입니다. 2,224제곱피트의 이 집은 침대 4개, 욕실 2.0개 건물입니다. Zillow에서 10 Walnut St 집 사진 34장을 찾으세요. Zillow에서 더 많은 부동산 세부 정보, 판매 내역 및 Zestimate 데이터를 확인하십시오. MLS # 72515880”,
"가격($)": 725000,
"이미지": "https://photos.zillowstatic.com/p_h/ISifzwig3xt2re1000000000.jpg"
}
[/암호]
[코드 언어 = "파이썬"]
{
'세부정보_광범위': {
"방 수": 4,
"바닥 크기(제곱피트)": "1,728"
},
"주소": {
"거리": "638 Grant Ave",
"지역": "노스 볼드윈",
"지역": "뉴욕",
"우편번호": "11510"
},
"제목": "638 Grant Ave, North Baldwin, NY 11510 | MLS #3137924 | 질로”,
“Detail_Short”: “638 Grant Ave , North baldwin, NY 11510-1332는 $299,000에 매물로 나와 있는 단독 주택입니다. 1,728평방피트의 이 집은 침대 4개, 욕실 2.0개 건물입니다. Zillow에서 638 Grant Ave 주택 사진 31장을 찾으세요. Zillow에서 더 많은 부동산 세부 정보, 판매 내역 및 Zestimate 데이터를 확인하십시오. MLS # 3137924”,
"$의 가격": 299000,
"이미지": "https://photos.zillowstatic.com/p_h/ISzz1p7wk4ktye1000000000.jpg"
}
[/암호]
대규모 부동산 데이터 스크랩
이와 같은 코드를 사용하면 몇 가지 특정 부동산 속성과 관련된 세부 정보만 크롤링할 수 있습니다. 때때로 관심 있는 부동산을 수동으로 확인할 수 있습니다. 그러나 미국 또는 국제적으로 특정 지역을 대상으로 하려는 경우 여러 웹사이트에서 부동산 목록을 수집하는 데 도움이 되는 전문 웹 스크래핑 서비스 제공업체 또는 데이터 스크래핑 도구가 필요합니다.
최고의 웹 스크래핑 제공업체인 PromptCloud는 웹 스크래핑 솔루션이 번거롭지 않아야 하며 클라이언트가 요구 사항을 제공하고 깨끗한 데이터를 수신하는 두 단계만 포함해야 한다고 믿습니다.
또한 여기 블로그에서 크롤러와 스크레이퍼를 모두 사용했습니다. 둘 다 동일하다고 혼동하지 마십시오. 그러나 더 알고 싶다면 웹 데이터 크롤링과 웹 데이터 스크래핑에 대한 블로그를 확인하십시오.
면책 조항: 튜토리얼에 있는 코드는 학습 목적으로만 사용됩니다. 우리는 그것이 사용되는 방식에 대해 책임을 지지 않으며, 소스 코드의 부정적인 영향에 대해 우리 측으로부터 어떠한 책임도 지지 않습니다. 우리 사이트에 이 코드가 있다고 해서 기사에 언급된 웹사이트를 스크랩하거나 크롤링 하는 것을 의미하지는 않습니다. 이 튜토리얼의 유일한 목적은 주요 웹 포털을 위한 웹 스크레이퍼 작성 기술을 보여주는 것입니다. 그러나 우리는 코드에 대한 지원을 제공할 의무가 없습니다. 특정 간격으로 확인하고 응답할 수 있도록 의견 섹션에 질문과 피드백을 추가하는 것이 좋습니다 .
