Python을 사용하여 Trulia에서 부동산 스크랩
게시 됨: 2018-09-15Trulia는 2005년에 캘리포니아의 부동산 목록과 함께 상점을 설립한 웹사이트입니다. 통근 및 대중 교통 데이터가 포함된 대화형 지도는 미국의 특정 위치에서 부동산의 운전 또는 통근 시간을 보여주므로 Trulia는 부동산 데이터를 수집하는 데 이상적인 선택입니다.
Trulia의 가장 큰 특징은 부동산 데이터 스크랩에 관심을 갖게 합니다.
- What Locals Say: What Locals Say는 최근 Trulia 기능으로, 주택 구매자, 판매자 및 세입자가 해당 지역의 현지인을 볼 수 있습니다. 이에 대한 정보는 설문조사, 설문조사 및 독립적인 검토를 통해 수집됩니다.
- Trulia Neighborhoods: Trulia는 최근 Trulia Neighborhoods를 출시했습니다. 사람들이 웹 사이트에서 부동산 목록에 대한 자세한 정보를 얻을 수 있도록 도와주는 고유한 기능입니다. 드론 영상과 함께 해당 지역에 대한 원본 사진, 설명 및 사실을 이 기능에서 볼 수 있습니다.
- 현지 법적 보호: 현지 법적 보호는 주택, 고용 및 공공 시설에 적용되는 현지 비차별법에 대한 정보를 제공하는 서비스입니다. 이 데이터는 다양한 사람들이 편안한 환경에서 적절한 숙박 시설을 쉽게 찾을 수 있도록 부동산 목록 옆에 제공됩니다.
Trulia 스크래핑을 시작하는 방법은 무엇입니까?
설치 및 시작과 관련하여 주요 여행 포털에서 데이터를 크롤링하는 방법에 대해 논의한 유사한 기사에서 이를 얻을 수 있습니다. 코드 편집기 Atom과 함께 Python 및 기타 종속성을 설치했으면 이 기사로 돌아와 계속 읽으십시오.
데이터를 스크랩하는 코드는 어디에 있습니까?
텍스트가 지겹다면 코드로 바로 가자. 코드가 아래에 나와 있지만 링크에서 다운로드하여 업무에 착수할 수도 있습니다. 다른 스크래핑 자습서에서 본 것처럼 python 명령 자체를 사용하여 실행할 수 있습니다. 프로그램을 다운로드한 후 명령 프롬프트의 위치로 이동하여 다음 명령을 실행합니다.
파이썬 trulia_extractor.py
Trulia 부동산 목록에 대한 링크를 입력하라는 메시지가 표시됩니다. 추출이 완료되면 확인 메시지가 표시되고 폴더에서 생성된 JSON 파일과 HTML 파일을 확인할 수 있습니다.
[코드 언어 = "파이썬"]
H:Python_Algorithmic_ProblemsScraping_assignmentsTrulia-Data-Extraction>python trulia_extractor.py
Trulia 부동산 목록 URL 입력 - https://www.trulia.com/p/ny/brooklyn/327-101st-st-1a-brooklyn-ny-11209–2180131215
———-데이터 추출이 완료되었습니다. json 파일을 확인하십시오.———-
#!/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('Trulia 부동산 목록 URL을 입력하세요- ')
# 웹사이트가 Mozilla 브라우저를 사용하여 액세스하고 있다고 믿게 만들기
요청 = 요청(url, headers={'사용자 에이전트': 'Mozilla/5.0'})
웹 페이지 = urlopen(req).read()
# 데이터를 쉽게 추출할 수 있도록 html 페이지의 BeautifulSoup 객체를 생성합니다.
수프 = BeautifulSoup(웹페이지, 'html.parser')
html = 수프.prettify('utf-8')
product_json = {}
# 이 코드 블록은 나열된 속성에 대한 한 줄짜리 설명을 제공합니다.
수프.findAll('meta', attrs={'name': 'description'})의 메타용:
노력하다:
product_json['설명'] = 메타['내용']
부서지다
제외하고:
통과하다
# 이 코드 블록은 나열된 속성의 링크를 가져옵니다.
수프.findAll('link', attrs={'rel': 'canonical'})의 링크:
노력하다:
product_json['링크'] = 링크['href']
부서지다
제외하고:
통과하다
# 이 코드 블록은 나열된 부동산의 가격과 통화를 알려줍니다.
수프.findAll('script',
속성={'유형': '응용 프로그램/ld+json'}):
details_json = ast.literal_eval(scripts.text.strip())
product_json['가격'] = {}
product_json['price']['amount'] = details_json['offers']['price']
product_json['가격']['통화'] = details_json['오퍼'
]['가격통화']
# 이 코드 블록은 나열된 속성에 대한 자세한 설명을 제공합니다.
수프.findAll('p', attrs={'id': 'propertyDescription'})의 단락:
product_json['광범위한 설명'] = 단락.텍스트.스트립()
product_json['개요'] = []
# 이 코드 블록은 나열된 속성과 관련된 중요한 사항을 알려줍니다.
수프.findAll('div',
attrs={'데이터 자동 테스트 ID': '홈 세부 정보-개요'
}):
divs.findAll('div')의 divs_second:
divs_second.findAll('ul')의 uls:
uls.findAll('li', text=True, recursive=False)의 lis에 대해:
product_json['개요'].append(lis.text.strip())
# 추출한 모든 정보로 json 파일 생성
open('house_details.json', 'w')을 outfile로 사용:
json.dump(product_json, outfile, 들여쓰기=4)
# 파싱한 페이지의 html 콘텐츠로 로컬에 html 파일을 생성합니다.
파일로 open('output_file.html', 'wb') 사용:
file.write(html)
print('———-데이터 추출이 완료되었습니다. json 파일을 확인하세요.———-')
[/암호]
예제에서 언급한 HTML을 입력하면 이 JSON이 폴더에 저장됩니다.
[코드 언어 = "php"]
{
"설명": "327 101st St #1A, Brooklyn, NY는 압류된 3개의 침대, 3개의 욕실, 1302제곱피트 주택입니다. 모든 압류 정보를 받으려면 Trulia에 로그인하십시오.",
"링크": "https://www.trulia.com/p/ny/brooklyn/327-101st-st-1a-brooklyn-ny-11209–2180131215",
"가격": {
"금액": "510000",
"통화": "USD"
},
"broad-description": "1층에 있는 초대형 복층 유닛으로 완성된 레크리에이션 룸, 엔터테인먼트 룸 및 하프 욕실을 갖추고 있습니다. 2층에는 침실 2개, 완비된 욕실 2개, 거실/식사 공간 및 야외 공간이 있습니다. Verrazano Bridge 보기가 있습니다.n 압류 가이드 보기”,
"개요": [
"콘도",
"침대 3개",
"3 목욕",
"2006년에 지어진",
"트룰리아에서의 5일",
"1,302제곱피트",
"$392/제곱피트",
“143 조회수”
]
}
[/암호]
데이터 스크래핑 코드 설명
코드를 이해하려면 주석문을 살펴보고 다른 모듈의 작동을 이해하려면 약간의 구글링이 필요합니다. 그러나 여기서 가장 중요한 부분은 Bs4 또는 BeautifulSoup을 사용하는 것입니다. BeautifulSoup은 개발자 그룹이 인터넷에 있는 많은 HTML 코드가 "정형화된" 것이 아니라 기능적이라는 사실을 깨달았을 때 생겨났습니다. 그 결과 예상대로 작동했으며 드물게 발생하는 약간의 사소한 오류가 있었지만 누군가가 동일한 HTML 파일을 구문 분석하려고 하면 장애물에 부딪힐 것입니다. - 형성. HTML을 트리나 다른 데이터 구조로 변환하려고 하면 여전히 동일한 오류가 발생합니다. 이제 그는 앉아서 세계의 다른 지역에 살고 있는 일부 개발자가 작성한 HTML을 정리해야 합니다. 이것은 그의 진정한 목표를 지연시킵니다. 따라서 코더가 작업을 더 쉽게 수행할 수 있도록 팀은 HTML 파일을 흡수하고 전달하는 파서를 개발했으며, 마치 나무를 탐색하는 것처럼 매우 쉽게 탐색할 수 있는 노드와 속성이 있는 BeautifulSoup 객체를 생성합니다.
예를 들어 코드를 작성할 때-
[코드 언어 = "php"]
수프.findAll('p', attrs={'id': 'propertyDescription'})의 단락:
product_json['광범위한 설명'] = 단락.텍스트.스트립()
[/암호]
내부에 id = propertyDescription이 있는 <p> 태그 내에서 텍스트를 추출하려고 합니다. 간단하지? 글쎄, 당신은 그것의 더 많은 이해하기 위해 그들의 웹 사이트를 확인하고 또한 프로그램을 실행할 때 생성되는 HTML 파일에서 더 많은 데이터를 추출하기 위해 자체 탐색을 시도해야합니다. 다음은 위에 제공된 링크로 코드를 실행할 때 생성된 HTML에 대한 링크입니다.
그렇다면 Trulia에서 어떤 데이터를 얻었습니까?
이 간단한 코드를 사용하여 무엇을 추출할 수 있었습니까? JSON을 제대로 보면 꽤 많이 추출한 것을 알 수 있습니다.
먼저, 목록에 사용할 수 있는 일종의 헤더인 설명이 있고, 어떤 이유로든 필요할 경우에 대비해 링크가 표시되며, 금액과 통화로 구분된 가격이 이어집니다. 광범위한 설명은 집이 어떤지 사람의 머리에 그림을 그리는 소유자의 설명으로 구성됩니다. 개요에는 여러 가지 주요 측면이 포함되어 있습니다. 키: 값 형식이 아닌 이유는 무엇입니까?
글쎄, 그것은 두 집이 같은 측면이나 자랑 할 물건이 없을 수 있기 때문입니다. 그렇기 때문에 이 제목은 잠재 구매자가 관심을 가질 만한 중요한 기능의 목록으로 구성됩니다. 여기에는 주택이 지어진 당시 침대 수, 욕실과 같은 다양한 사항이 포함될 수 있습니다. Trulia에 등재되었을 때부터 총 면적, 평방 피트당 가격, 현재까지 목록을 본 사람 수 등.
따라서 이러한 사항이 변경될 수 있으며 언젠가 목록에서 프로그램을 실행하면 전날 동일한 목록에서 얻은 것과 동일한 JSON을 얻지 못할 수 있음을 이해합니다.
비즈니스에서 이 코드 사용
이 Trulia 스크래핑 설정은 여러 가지 방법으로 귀하의 비즈니스에서 사용할 수 있습니다. 목록 링크의 CSV를 만들고 자동화 스크립트를 사용하여 CSV의 개별 행에서 실행할 코드를 가져올 수 있습니다. 더 나은 점은 위치가 입력될 때 위치의 모든 목록을 가져오고 이 코드를 실행하여 각 목록의 모든 데이터를 가져오는 시스템을 구축할 수 있다는 것입니다. 이는 PromptCloud와 같은 웹 스크래핑 서비스 제공업체의 전문 지식을 사용하여 쉽게 달성할 수 있습니다.

데이터는 오늘날의 데이터 중심 경제에서 돈이며 인터넷에서 무료로 사용할 수 있는 모든 데이터를 최대한 활용하면 어떤 사업을 하기로 결정하든 매우 수익성이 있음이 증명될 수 있습니다. 나는 그 메모에 서명하고 당신이 사실에 대해 숙고하도록 남겨둘 것입니다.
웹 데이터 추출에 도움이 필요하십니까?
당사의 웹 스크래핑 서비스를 통해 비즈니스 애플리케이션용 웹 사이트에서 깨끗하고 바로 사용할 수 있는 데이터를 얻으십시오.
면책 조항: 이 튜토리얼에서 제공하는 코드는 학습용입니다. 우리는 그것이 어떻게 사용되는지에 대해 책임을 지지 않으며 소스 코드의 해로운 사용에 대해 어떠한 책임도 지지 않습니다.
