Scrape Immobilien von Trulia mit Python
Veröffentlicht: 2018-09-15Trulia ist eine Website, die 2005 gegründet wurde, zunächst mit Immobilienangeboten in Kalifornien. Eine interaktive Karte mit Pendler- und Transitdaten zeigt die Fahr- oder Pendelzeiten der Immobilie von jedem beliebigen Ort in den Vereinigten Staaten, was Trulia zu einer idealen Wahl macht, um Immobiliendaten zu kratzen.
Die besten Eigenschaften von Trulia machen es interessant, Immobiliendaten zu kratzen.
- What Locals Say: What Locals Say ist eine neue Trulia-Funktion, die es Käufern, Verkäufern und Mietern von Eigenheimen ermöglicht, Ansichten von Einheimischen eines Gebiets oder der Nachbarschaft zu erhalten. Informationen dazu werden mithilfe von Umfragen, Umfragen und unabhängigen Bewertungen gesammelt.
- Trulia Neighborhoods: Trulia hat kürzlich Trulia Neighborhoods eingeführt. Es ist eine einzigartige Funktion, die Menschen hilft, mehr Informationen über eine Immobilienliste von ihrer Website zu erhalten. In dieser Funktion sind Originalfotos, Beschreibungen und Fakten über das Gebiet sowie sogar Drohnenaufnahmen zu sehen.
- Lokaler Rechtsschutz: Lokaler Rechtsschutz ist ein Dienst, der Informationen zu lokalen Antidiskriminierungsgesetzen bereitstellt, die für ein Haus, eine Beschäftigung sowie öffentliche Unterkünfte gelten. Diese Daten werden neben den Immobilienangeboten bereitgestellt, um es einer breiteren Masse zu erleichtern, eine angemessene Unterkunft in einer komfortablen Umgebung zu finden.
Wie fange ich an, Trulia zu schaben?
Was die Installation und den Einstieg betrifft, können Sie diese aus einem ähnlichen Artikel entnehmen, in dem wir besprochen haben, wie Daten von einem führenden Reiseportal gecrawlt werden. Nachdem Sie Python und andere Abhängigkeiten zusammen mit dem Code-Editor Atom installiert haben, kehren Sie zu diesem Artikel zurück, um weiterzulesen.
Wo ist der Code zum Scrapen von Daten?
Falls Sie den Text satt haben, gehen wir direkt zum Code. Obwohl der Code unten angegeben ist, können Sie ihn auch über den Link herunterladen und zur Sache kommen. Sie können es mit dem Python-Befehl selbst ausführen, wie Sie es vielleicht in den anderen Scraping-Tutorials gesehen haben. Sobald Sie das Programm heruntergeladen haben, gehen Sie einfach zu dem Ort in der Eingabeaufforderung und führen Sie den Befehl aus:
python trulia_extractor.py
Sie werden aufgefordert, den Link für eine Trulia-Immobilienliste einzugeben. Sobald die Extraktion abgeschlossen ist, wird eine Bestätigungsmeldung angezeigt und Sie können fortfahren, Ihren Ordner auf die JSON-Datei und die erstellte HTML-Datei zu überprüfen.
[code language="python"]
H:Python_Algorithmic_ProblemsScraping_assignmentsTrulia-Data-Extraction>python trulia_extractor.py
Geben Sie die URL der Trulia-Immobilienliste ein: https://www.trulia.com/p/ny/brooklyn/327-101st-st-1a-brooklyn-ny-11209–2180131215
———-Die Datenextraktion ist abgeschlossen. Überprüfen Sie die JSON-Datei.———-
#!/usr/bin/python
# -*- Kodierung: utf-8 -*-
import urllib.request
import urllib.parse
import urllib.fehler
aus bs4 importieren BeautifulSoup
SSL importieren
json importieren
ast. importieren
Betriebssystem importieren
from urllib.request import Anfrage, urlopen
# Zum Ignorieren von SSL-Zertifikatsfehlern
ctx = ssl.create_default_context()
ctx.check_hostname = Falsch
ctx.verify_mode = ssl.CERT_NONE
# Eingabe vom Benutzer
url = input('URL der Trulia-Eigenschaftsliste eingeben- ')
# Die Website glauben machen, dass Sie mit einem Mozilla-Browser darauf zugreifen
req = Request(url, headers={'User-Agent': 'Mozilla/5.0'})
Webseite = urlopen(req).read()
# Erstellen eines BeautifulSoup-Objekts der HTML-Seite zum einfachen Extrahieren von Daten.
Suppe = BeautifulSoup(Webseite, 'html.parser')
html = Suppe.prettify('utf-8')
product_json = {}
# Mit diesem Codeblock erhalten Sie eine einzeilige Beschreibung der aufgelisteten Eigenschaft
für meta in soup.findAll('meta', attrs={'name': 'description'}):
Versuchen:
product_json['description'] = meta['content']
Unterbrechung
außer:
passieren
# Mit diesem Codeblock erhalten Sie den Link der aufgelisteten Eigenschaft
für Link in soup.findAll('link', attrs={'rel': 'canonical'}):
Versuchen:
product_json['link'] = link['href']
Unterbrechung
außer:
passieren
# Dieser Codeblock gibt Ihnen den Preis und die Währung der aufgelisteten Immobilie
für Skripte in soup.findAll('script',
attrs={'type': 'application/ld+json'}):
details_json = ast.literal_eval(scripts.text.strip())
product_json['Preis'] = {}
product_json['Preis']['Betrag'] = details_json['Angebote']['Preis']
product_json['Preis']['Währung'] = details_json['Angebote'
]['PreisWährung']
# Mit diesem Codeblock erhalten Sie die detaillierte Beschreibung der aufgelisteten Eigenschaft
für Absatz in soup.findAll('p', attrs={'id': 'propertyDescription'}):
product_json['broad-description'] = paragraph.text.strip()
product_json['overview'] = []
# Dieser Codeblock liefert Ihnen die wichtigen Punkte bezüglich der aufgelisteten Immobilie
für divs in soup.findAll('div',
attrs={'data-auto-test-id': 'home-details-overview'
}):
für divs_second in divs.findAll('div'):
für uls in divs_second.findAll('ul'):
für lis in uls.findAll('li', text=True, recursive=False):
product_json['Übersicht'].append(lis.text.strip())
# Erstellt eine JSON-Datei mit allen Informationen, die Sie extrahiert haben
mit open('house_details.json', 'w') als outfile:
json.dump (product_json, outfile, Einrückung=4)
# Erstellt eine HTML-Datei in Ihrem lokalen Verzeichnis mit dem HTML-Inhalt der Seite, die Sie analysiert haben.
mit open('output_file.html', 'wb') als Datei:
file.write(html)
print ('———-Datenextraktion abgeschlossen. JSON-Datei prüfen.———-')
[/Code]
Wenn Sie das im Beispiel erwähnte HTML eingeben, erhalten Sie dieses JSON in Ihrem Ordner gespeichert.
[code language="php"]
{
„Beschreibung“: „327 101st St #1A, Brooklyn, NY ist ein 1302 Quadratfuß großes Haus mit 3 Schlafzimmern und 3 Bädern in Zwangsvollstreckung. Melden Sie sich bei Trulia an, um alle Informationen zur Zwangsvollstreckung zu erhalten.”,
„Link“: „https://www.trulia.com/p/ny/brooklyn/327-101st-st-1a-brooklyn-ny-11209–2180131215“,
"Preis": {
„Betrag“: „510000“,
"Währung: USD"
},
„breite Beschreibung“: „Sehr große Maisonette-Einheit im 1. Stock mit einem fertigen Freizeitraum, einem Unterhaltungsraum und einem halben Badezimmer. Zweite Ebene verfügt über 2 Schlafzimmer, 2 Badezimmer, ein Wohn-/Esszimmer und einen Platz im Freien. Es gibt Aussicht auf die Verrazano-Brücke.
"Überblick": [
„Eigentumswohnung“,
„3 Betten“,
„3 Bäder“,
„Baujahr 2006“,
„5 Tage auf Trulia“,
„1.302 qm“,
„$392/m²“,
„143 Aufrufe“
]
}
[/Code]
Data-Scraping-Code erklärt
Wenn Sie den Code verstehen möchten, können Sie sich die Kommentaranweisungen ansehen, und um die Funktionsweise der verschiedenen Module zu verstehen, müssen Sie ein wenig googeln. Aber der wichtigste Teil hier ist die Verwendung von Bs4 oder BeautifulSoup. BeautifulSoup entstand, als eine Gruppe von Entwicklern feststellte, dass ein Großteil des HTML-Codes im Internet nicht „wohlgeformt“, sondern funktionsfähig war. Dies führte dazu, dass es wie erwartet funktionierte, mit einigen kleinen, selten auftretenden Fehlern, aber wenn jemand versuchte, dieselbe HTML-Datei zu parsen, stieß er auf Hindernisse – das heißt, er erhielt Fehler, dass das HTML nicht gut war -gebildet. Wenn er versuchte, den HTML-Code in einen Baum oder eine andere Datenstruktur umzuwandeln, erhielt er immer noch denselben Fehler. Jetzt muss er sich hinsetzen und HTML bereinigen, das von einem Entwickler geschrieben wurde, der in einem anderen Teil der Welt lebt. Dies verzögert sein eigentliches Ziel. Um den Programmierern die Arbeit zu erleichtern, entwickelte das Team daher einen Parser, der eine übergebene HTML-Datei absorbiert und ein BeautifulSoup-Objekt mit Knoten und Attributen erstellt, das Sie sehr einfach durchlaufen können, fast so, als würden Sie einen Baum durchlaufen.
Zum Beispiel wenn ich den Code schreibe-
[code language="php"]
für Absatz in soup.findAll('p', attrs={'id': 'propertyDescription'}):
product_json['broad-description'] = paragraph.text.strip()
[/Code]
Ich versuche, den Text innerhalb eines <p>-Tags zu extrahieren, der id = propertyDescription enthält. Einfach, nicht wahr? Nun, Sie müssen sich ihre Website ansehen, um mehr davon zu verstehen, und die Selbsterkundung ausprobieren, um mehr Daten aus der HTML-Datei zu extrahieren, die auch beim Ausführen des Programms erstellt wird. Hier ist der Link für den HTML-Code, der beim Ausführen des Codes mit dem oben angegebenen Link generiert wird.

Welche Daten haben wir also von Trulia bekommen?
Was konnten wir also mit diesem einfachen Code extrahieren? Wenn Sie sich JSON richtig ansehen, können Sie sehen, dass wir ziemlich viel extrahiert haben.
Zuerst haben wir die Beschreibung erhalten, die eine Art Überschrift ist, die Sie für die Auflistung verwenden können, dann den Link, falls Sie ihn aus irgendeinem Grund benötigen, und es folgt der Preis, der in den Betrag sowie die Währung unterteilt ist. Die allgemeine Beschreibung besteht aus einer Eigentümerbeschreibung, die ein Bild im Kopf einer Person zeichnet, wie das Haus ist. Die Übersicht enthält eine Reihe von Schlüsselaspekten. Warum sind sie nicht in einem key:value-Format?
Nun, das liegt daran, dass keine zwei Häuser die gleichen Aspekte oder Dinge haben dürfen, mit denen sie sich rühmen können. Aus diesem Grund besteht diese Überschrift aus einer Liste wichtiger Merkmale, an denen ein potenzieller Käufer interessiert sein könnte. Sie kann verschiedene Punkte enthalten, wie z. B. die Anzahl der Betten und Badezimmer, wann das Haus gebaut wurde, seit wann es in Trulia aufgeführt ist Gesamtfläche, Preis pro Quadratfuß und die Anzahl der Personen, die den Eintrag bisher angesehen haben, und mehr.
Sie verstehen also, dass sich diese Dinge ändern können, und wenn Sie das Programm eines Tages auf einem Eintrag ausführen, erhalten Sie möglicherweise nicht denselben JSON wie am Tag zuvor von demselben Eintrag.
Verwenden Sie diesen Code im Geschäft
Dieses Trulia Scraping-Setup kann in Ihrem Unternehmen auf verschiedene Weise verwendet werden. Sie können eine CSV-Datei mit Auflistungslinks erstellen und den Code mithilfe eines Automatisierungsskripts in einzelnen Zeilen der CSV-Datei ausführen lassen. Was besser wäre, wäre, dass Sie ein System bauen könnten, das alle Einträge eines Standorts erfasst, wenn der Standort darin eingegeben wird, und dann diesen Code ausführen, um alle Daten jedes Eintrags zu erfassen. Dies kann leicht mit der Expertise von Web-Scraping-Dienstleistern wie PromptCloud erreicht werden.
Daten sind Geld in der heutigen datengesteuerten Wirtschaft, und das Beste aus all diesen frei verfügbaren Daten im Internet zu machen, kann sich in jedem Geschäftszweig, in den Sie sich wagen, als sehr profitabel erweisen. Ich würde diese Notiz unterzeichnen und es Ihnen überlassen, über die Tatsache nachzudenken.
Benötigen Sie Hilfe beim Extrahieren von Webdaten?
Erhalten Sie saubere und gebrauchsfertige Daten von Websites für Geschäftsanwendungen durch unsere Web-Scraping-Dienste.
Haftungsausschluss: Der in diesem Tutorial bereitgestellte Code dient nur zu Lernzwecken. Wir sind nicht verantwortlich für die Verwendung und übernehmen keine Haftung für eine nachteilige Verwendung des Quellcodes.
