Zurück zum Blog
Anwendungsfälle
Robert MunceanuLast updated on Mar 31, 20269 min read

Der umfassende Leitfaden zum Web-Scraping von Immobiliendaten

Der umfassende Leitfaden zum Web-Scraping von Immobiliendaten

Der Immobilienmarkt wächst stetig, und damit versuchen Makler und Unternehmen, neue Lösungen zu finden, um die Zukunft besser einschätzen zu können. Zwar verändert sich der Immobilienmarkt im Allgemeinen nicht von heute auf morgen drastisch, doch wird er von viel zu vielen Faktoren beeinflusst, als dass eine einzelne Person oder gar ein Unternehmen den Überblick behalten könnte.

Werden die Preise also steigen oder fallen? Welche Stadtteile sind besonders gefragt? Gibt es Immobilien, die nur eine Renovierung benötigen, um ihren Wert in die Höhe zu treiben? Dies sind nur einige der Fragen, die sich Immobilienmakler häufig stellen.

Um diese Fragen zu beantworten, benötigt man Unmengen an Forschungsdaten zum Vergleich, und das manuelle Sammeln solcher Informationsmengen käme einer aussichtslosen Suche gleich. Hier kommt Web Scraping ins Spiel: Es sammelt und strukturiert Daten so schnell, wie man „Web Scraping“ sagen kann:

Wie wir alle inzwischen wissen, ist Web Scraping das Kraftpaket der Datenextraktion! Wenn Sie also mehr darüber erfahren möchten, warum jemand Immobiliendaten aus dem Internet scrapen möchte und wie man das richtig macht, lassen Sie uns unsere Reise gemeinsam fortsetzen. Wir haben sowohl eine DIY-Lösung als auch eine Schritt-für-Schritt-Anleitung vorbereitet, wie WebScrapingAPI dies bewerkstelligen kann.

Warum Sie Immobiliendaten scrapen sollten

Durch das Scraping des Webs wird sichergestellt, dass die extrahierten Informationen über Immobilien präzise, glaubwürdig und aktuell sind. Auf diese Weise kann man vorhersagen, ob der Immobilienmarkt in Kürze in die Höhe schnellen wird, oder erkennen, in welcher Preisklasse die eigene Immobilie konkurrieren wird.

Für Unternehmen sind Webdaten wertvoll, da sie zu besseren Entscheidungen, einer besseren Preisgestaltung und einer höheren Gewinnspanne führen. Der Haken dabei ist jedoch, dass jede Information so aktuell wie möglich sein muss, was Web-Scraping zur naheliegenden Lösung macht.

Die am häufigsten extrahierten Arten von Immobiliendaten sind die folgenden:

  • Immobilientyp
  • Verkaufspreis
  • Lage
  • Größe
  • Ausstattung
  • Monatliche Miete
  • Parkplätze
  • Immobilienmakler

Die oben aufgeführten Informationen können über Erfolg oder Misserfolg einer Immobilienagentur entscheiden. Sie machen einen großen Unterschied in Bezug auf Kommunikation, Strategie und Effizienz, doch der größte Vorteil liegt darin, wie gut Makler ihre Objekte und den Markt kennenlernen. Danach geht es nur noch darum, den richtigen Kunden zu finden.

Werfen wir einen Blick auf einige Szenarien, die den Wert von Web Scraping veranschaulichen:

Immobilienagenturen

  • Entscheidungsfindung: Risiken einzugehen gehört zum Job, aber das bedeutet nicht, dass man dies blind tun muss. Recherchen vor dem Kauf oder Verkauf sind für die Arbeit unerlässlich, und mehr Informationen bedeuten bessere Geschäfte.
  • Marktprognosen: Es ist entscheidend zu wissen, wann man Immobilien kaufen und verkaufen muss, um das beste und rentabelste Ergebnis zu erzielen. Manche Immobilienarten erfreuen sich steigender Beliebtheit, während andere an Attraktivität verlieren. Manche Gegenden florieren, während andere stagnieren. Zu wissen, was auf einen zukommt, ist der Schlüssel zum langfristigen Erfolg eines Unternehmens.

Normale Leute

Beim Web Scraping geht es nicht nur darum, Unternehmen zu helfen. Tatsächlich ist ein Grund für seine Beliebtheit, wie einfach es für eine einzelne Person zu nutzen ist. Sicher, man braucht etwas Wissen in Informatik, aber es gibt jede Menge Tutorials, die helfen. Verdammt, das hier ist sogar eines davon!

  • Kauf und Verkauf: Man muss den Wert einer Immobilie vor dem Kauf oder Verkauf genau einschätzen. Es wäre doch schade, das Elternhaus zu verkaufen und es eine Woche später auf einer Immobilienwebsite zum doppelten Preis zu sehen, oder?
  • Investieren: Wenn du gerne in Immobilien investierst, sei es, indem du zu einem niedrigen Preis kaufst, um später mit Gewinn zu verkaufen, oder indem du die Immobilie einfach vermietest, ist es sehr empfehlenswert zu wissen, wie schnell du die Gewinnschwelle erreichst und welche Rendite du erwarten kannst.

Ok, genug zu den Anwendungsfällen. Schauen wir uns etwas Code an!

Nehmen wir zunächst einmal an, wir suchen nach einem neuen Zuhause in New York City. Wir möchten eine Immobilie mit mindestens zwei Schlafzimmern und natürlich einem Badezimmer kaufen. Also beginnen wir unsere Suche auf Realtor, extrahieren Daten von dort und vergleichen sie, um das beste Angebot zu finden.

Es gibt verschiedene Möglichkeiten, Inhalte aus Webseiten zu extrahieren. In diesem Artikel werden zwei Methoden erläutert: eine, bei der wir unseren Web-Scraper von Grund auf selbst erstellen, und eine, bei der wir ein bereits vorhandenes Tool verwenden.

Versuchen wir es zunächst selbst. Der Code wird sich später als hilfreich erweisen, sobald wir ein professionelles Web-Scraping-Tool verwenden.  

Erstellen eines Web-Scrapers zum Extrahieren von Immobiliendaten

Ich habe mich für Python entschieden, da diese Sprache im Bereich Web Scraping sehr beliebt ist. Wir haben ein allgemeines Tutorial zum Extrahieren von Webdaten in Python, das du dir unbedingt ansehen solltest!

Den Website-Code untersuchen

Die Daten, die wir extrahieren müssen, befinden sich in den verschachtelten Tags der betreffenden Webseite. Bevor wir mit dem Scraping beginnen, müssen wir sie finden. Klicken Sie dazu einfach mit der rechten Maustaste auf das Element und wählen Sie „Inspect“.

Es öffnet sich ein Fenster namens „Browser-Inspektor“, das wie folgt aussieht:

In diesem Fenster navigieren wir, um die Tags und Klassen zu finden, unter denen sich unsere wichtigen Daten befinden. Das mag zunächst etwas einschüchternd wirken, wird aber mit etwas Erfahrung immer einfacher!

Finden Sie die Daten, die Sie extrahieren möchten

Wir sehen, dass sich alles, was wir extrahieren müssen, innerhalb des Tags <li> mit der Klasse „component_property-card befindet. Wenn wir noch tiefer in das Tag vordringen, stellen wir fest, dass die Daten zur Anzahl der Betten und Badezimmer unter dem Attribut „data-label mit den Werten „pc-meta-beds“ bzw. „pc-beta-baths zu finden sind. Mit diesem Wissen können wir nun mit dem Schreiben unseres Codes fortfahren!

Bereiten Sie die Arbeitsumgebung vor

Wie bereits erwähnt, verwenden wir Python als Programmiersprache, daher musst du es herunterladen und installieren.

Sie können jede IDE verwenden, mit der Sie sich wohlfühlen, aber ich empfehle PyCharm.

Nachdem Sie ein neues Projekt erstellt haben, erleichtern Sie sich die Arbeit durch die Verwendung dieser Bibliotheken:

  • Selenium: Wird für Webtests und die Automatisierung von Browseraktivitäten verwendet.
  • BeautifulSoup: Wird zum Parsen von HTML- und XML-Dokumenten verwendet.
  • Pandas: Wird zur Datenbearbeitung verwendet. Die extrahierten Daten werden in einem strukturierten Format gespeichert.

Die Installation dieser Bibliotheken im Projekt ist ganz einfach. Geben Sie einfach diesen Befehl im Terminal des Projekts ein: python -m pip install selenium beautifulsoup4 pandas

Schreiben Sie den Code

Beginnen wir damit, die zuvor installierten Bibliotheken zu importieren:

from selenium import webdriver
from bs4 import BeautifulSoup
import pandas as pd

Um die Daten von der Website zu extrahieren, müssen wir sie laden, indem wir den WebDriver so konfigurieren, dass er den Chrome-Browser verwendet. Dazu müssen wir lediglich den Pfad angeben, unter dem sich der ChromeDriver befindet. Vergessen Sie nicht, am Ende den Namen der ausführbaren Datei anzugeben – nicht nur den Speicherort!

driver = webdriver.Chrome('your/path/here/chromedriver')

Neben der Anzahl der Schlafzimmer und Badezimmer können wir auch die Adresse, den Preis und, warum nicht, die Größe der Immobilie extrahieren. Je mehr Informationen wir haben, desto einfacher wird es, sich für ein neues Zuhause zu entscheiden.

Deklarieren Sie die Variablen und legen Sie die URL der zu scrapenden Website fest.

prices = []
beds = []
baths = []
sizes = []
addresses = []
driver.get('https://www.realtor.com/realestateandhomes-search/New-York_NY')

Wir müssen die Daten von der Website extrahieren, die sich, wie zuvor erläutert, in den verschachtelten Tags befinden. Suchen Sie die Tags mit den zuvor genannten Attributen und speichern Sie die Daten in den oben deklarierten Variablen. Denken Sie daran, dass wir nur Immobilien mit mindestens zwei Schlafzimmern und einem Badezimmer speichern wollen!

content = driver.page_source
soup = BeautifulSoup(content, features='html.parser')
for element in soup.findAll('li', attrs={'class': 'component_property-card'}):
   price = element.find('span', attrs={'data-label': 'pc-price'})
   bed = element.find('li', attrs={'data-label': 'pc-meta-beds'})
   bath = element.find('li', attrs={'data-label': 'pc-meta-baths'})
   size = element.find('li', attrs={'data-label': 'pc-meta-sqft'})
   address = element.find('div', attrs={'data-label': 'pc-address'})

   if bed and bath:
       nr_beds = bed.find('span', attrs={'data-label': 'meta-value'})
       nr_baths = bath.find('span', attrs={'data-label': 'meta-value'})

       if nr_beds and float(nr_beds.text) >= 2 and nr_baths and float(nr_baths.text) >= 1:
           beds.append(nr_beds.text)
           baths.append(nr_baths.text)

           if price and price.text:
               prices.append(price.text)
           else:
               prices.append('No display data')

           if size and size.text:
               sizes.append(size.text)
           else:
               sizes.append('No display data')

           if address and address.text:
               addresses.append(address.text)
           else:
               addresses.append('No display data')

Großartig! Wir haben alle Informationen, die wir brauchen, aber wo sollen wir sie speichern? Hier kommt die Pandas-Bibliothek ins Spiel und hilft uns, die Daten in einer CSV-Datei zu strukturieren, die wir später verwenden können.

df = pd.DataFrame({'Address': addresses, 'Price': prices, 'Beds': beds, 'Baths': baths, 'Sizes': sizes})
df.to_csv('listings.csv', index=False, encoding='utf-8')

Wenn wir den Code ausführen, wird eine Datei namens „listings.csv“ erstellt, in der sich unsere wertvollen Daten befinden!

Wir haben es geschafft! Wir haben unser eigenes Web-Scraping-Tool erstellt! Lassen Sie uns nun direkt loslegen und sehen, welche Schritte wir befolgen müssen und welche Codezeilen wir ändern müssen, um ein Scraping-Tool zu verwenden.

Verwendung einer Web-Scraping-API

Für dieses Szenario verwenden wir natürlich WebScrapingAPI.

Erstellen Sie ein kostenloses WebScrapingAPI-Konto

Um WebScrapingAPI nutzen zu können, musst du ein Konto erstellen. Keine Sorge, die ersten 5000 API-Aufrufe sind kostenlos, und du musst keine persönlichen Daten wie Kreditkarteninformationen angeben. Nachdem du dein Konto erfolgreich erstellt und deine E-Mail-Adresse bestätigt hast, können wir zum nächsten Schritt übergehen.

API-Schlüssel

Um WebScrapingAPI zu nutzen, musst du dich über den privaten API-Schlüssel authentifizieren, den du in deinem Konto-Dashboard findest. Beachte, dass du diesen Schlüssel niemandem weitergeben darfst. Wenn du den Verdacht hast, dass er kompromittiert wurde, kannst du den Schlüssel jederzeit zurücksetzen, indem du auf die Schaltfläche „API-Schlüssel zurücksetzen“ klickst.

Code anpassen

Perfekt! Nun, da Sie den API-Schlüssel haben, nehmen wir die notwendigen Änderungen vor.

Wir werden keinen WebDriver mehr verwenden. Stattdessen sendet die Bibliothek „requests“ die Anfrage an die WebScrapingAPI und ruft den HTML-Code der Website als Antwort ab.

import requests
from bs4 import BeautifulSoup
import pandas as pd

Als Nächstes müssen wir einige Parameter für die Anfrage vorbereiten: die URL der Website, von der wir Daten extrahieren möchten (realtor), und unseren API-Schlüssel.

url = "https://api.webscrapingapi.com/v1"
params = {
 "api_key": "XXXXXXX",
 "url": "https://www.realtor.com/realestateandhomes-search/New-York_NY"
}
response = requests.request("GET", url, params=params)

Vergiss nicht, anzugeben, welchen Inhalt BeautifulSoup analysieren soll. Anstelle der Quelle aus dem ChromeDriver verwenden wir die von der API empfangene Antwort.

content = response.text

Ab diesem Punkt kannst du denselben Code wie im vorherigen Szenario verwenden. Die Daten werden weiterhin in einer CSV-Datei namens „listings.csv“ gespeichert.

Fertig!

Und das war’s auch schon; du kannst den Code ausführen. WebScrapingAPI erledigt die Arbeit, und du erhältst die notwendigen Daten, um das perfekte Zuhause zu finden. Aber vielleicht fragst du dich: „Was ist der Unterschied zwischen der Verwendung von WebScrapingAPI und dem Scraper, den wir selbst erstellt haben?“ Nun, lass mich das erklären.

Selbstgemacht vs. Fertig

Einer der größten Vorteile der Verwendung von WebScrapingAPI sind seine Proxys. Der Dienst verfügt über einen riesigen rotierenden Proxy-Pool, der die Anonymität seiner Nutzer beim Surfen im Internet gewährleistet.

Diese Funktion ist auch hilfreich, wenn jemand eine Website in großem Umfang scrapen möchte. Wenn Sie innerhalb kurzer Zeit mehrere Anfragen an eine Website stellen, wird Ihre IP-Adresse mit Sicherheit gesperrt, da dies als Angriff oder als Bot mit böswilligen Absichten interpretiert wird.

Durch die Verwendung eines rotierenden Proxy-Pools glaubt die Website, dass mehrere Nutzer mit ihr interagieren, sodass Sie unentdeckt bleiben und den ganzen Tag lang scrapen können.

Beim Scraping im Web können noch viele weitere Hindernisse auf Sie zukommen, wie beispielsweise CAPTCHAs oder Browser-Fingerprinting. Wie Sie sich vielleicht denken können, haben wir WebScrapingAPI entwickelt, um all diese Hürden zu umgehen und die Datenextraktion für Sie so einfach wie möglich zu gestalten. Wenn Sie mehr über dieses Thema erfahren möchten, lesen Sie unseren Artikel über die häufigsten Probleme, auf die Web-Scraper stoßen.

Ein Tool, viele Anwendungsfälle

Wir sind uns alle einig, dass das Scraping des Webs eine hervorragende Lösung für die Immobilienbranche ist, aber Sie können es auch für andere Zwecke nutzen. Hier sind nur einige Beispiele: die Beobachtung Ihrer Konkurrenz, der Vergleich von Produktpreisen und das Training von Algorithmen für maschinelles Lernen.

Ich könnte noch weitermachen, aber das ist schon ein ganz neues Thema. Ich möchte diesen Artikel nicht endlos in die Länge ziehen, daher empfehle ich Ihnen, sich diese sieben Anwendungsfälle für Web-Scraping-Tools anzusehen.

Ein Web-Scraping-Tool in der Freizeit zu erstellen, klingt zwar verlockend, aber es gibt viele Dinge zu beachten, die einen erheblichen Teil der Entwicklungszeit in Anspruch nehmen. Hier finden Sie eine ausführliche Diskussion über selbst erstellte vs. vorgefertigte Web-Scraping-Tools.

Wenn es darum geht, ein paar Webseiten zu scrapen, kann das Selberbauen des Tools eine schnelle Lösung sein. Dennoch erfordert professionelle Arbeit ein professionelles Tool, idealerweise eine API, WebScrapingAPI. Habe ich die kostenlose Testversion schon erwähnt?

Über den Autor
Robert Munceanu, Full-Stack-Entwickler @ WebScrapingAPI
Robert MunceanuFull-Stack-Entwickler

Robert Munceanu ist Full-Stack-Entwickler bei WebScrapingAPI, wo er in allen Bereichen des Produkts mitwirkt und an der Entwicklung zuverlässiger Tools und Funktionen zur Unterstützung der Plattform mitwirkt.

Los geht’s

Sind Sie bereit, Ihre Datenerfassung zu erweitern?

Schließen Sie sich den über 2.000 Unternehmen an, die WebScrapingAPI nutzen, um Webdaten im Unternehmensmaßstab ohne zusätzlichen Infrastrukturaufwand zu extrahieren.