Zum Inhalt springen
Zurück zum Blog

So extrahieren Sie Daten aus Airbnb-Inseraten

Robert SfichiZuletzt aktualisiert am 5 min read
So extrahieren Sie Daten aus Airbnb-Inseraten

Extrahieren starten

Testen Sie WebScrapingAPI kostenlos

Erhalten Sie 1.000 kostenlose API-Credits. Keine Kreditkarte erforderlich.

Los geht’s

Waren Sie schon einmal in der Situation, dass Sie nach dem perfekten Ort für Ihren Urlaub gesucht haben? Oder möchten Sie vielleicht einfach nur herausfinden, wie Ihr Inserat im Vergleich zu denen Ihrer Nachbarn abschneidet? Wie auch immer – warum nutzen Sie dafür nicht die Möglichkeiten des Web-Scrapings?

Ein Web-Scraper ist eine Software, die Ihnen hilft, den mühsamen Prozess des Sammelns nützlicher Daten von Websites Dritter zu automatisieren. Die meisten Online-Dienste bieten Entwicklern Zugriff auf eine API, um Informationen von ihrer Website einfach auslesen zu können. Leider gehört Airbnb nicht dazu. Hier kommen Web-Scraper ins Spiel.

Warum sollte jemand Airbnb-Daten scrapen?

Airbnb ist eine Plattform, die Menschen die Möglichkeit bietet, ihre Immobilien mit nur einer Internetverbindung zu vermieten. Sie wurde 2008 von Brian Chesky, Nathan Blecharczyk und Joe Gebbia gegründet und hat selbst während der Pandemie enormen Erfolg verzeichnet.

Jeder kann die Angebote auf der Plattform finden, indem er einfach auf Airbnb zugreift und nach einer Unterkunft sucht, aber es gibt keine einfache Möglichkeit, einen aussagekräftigen Datensatz mit den folgenden Informationen zu finden:

  • Wie viele Angebote gibt es in einer Stadt?
  • Wie sind sie preislich gestaltet?
  • Wie sehen sie aus?
  • Wie werden sie bewertet?

Natürlich haben Sie Ihre eigenen Gründe, warum Sie diese Informationen benötigen, und ich bin sicher, dass wir Ihnen dabei helfen können.

Lassen Sie uns loslegen!

Daten mit einer Web-Scraping-API extrahieren

Um alle erforderlichen Daten extrahieren zu können, befolge bitte die folgenden Schritte.

1. Den Quellcode überprüfen

Schauen Sie sich die Elemente an, die Sie von der Airbnb-Website scrapen möchten. Wenn Sie mit der rechten Maustaste auf eine beliebige Stelle auf der Seite klicken und die Option „Untersuchen“ auswählen, gelangen Sie zu den Entwicklertools.

Nehmen wir an, wir möchten den Preis, das Bild, die Art und die Bewertung der Unterkünfte abrufen, die wir scrapen wollen.

Zunächst suchen wir das gemeinsame Element im DOM. Es sieht so aus, als wäre _gigle7 das, wonach wir suchen.

2. Auswahl eines Web-Scrapers

Um die besten Ergebnisse zu erzielen, empfehlen wir die Nutzung unseres Dienstes WebScrapingAPI, da wir unser Tutorial darauf aufbauen. Du kannst ihn kostenlos ausprobieren, indem du diesen Link aufrufst. Erstelle ein Konto und kehre zu dieser Seite zurück, sobald du fertig bist.

Nachdem Sie sich angemeldet haben, gehen Sie zur Dashboard-Seite. Hier finden Sie Ihren privaten API-Zugriffsschlüssel, den wir für die Anfragen verwenden werden, den API-Playground, in dem Sie unser Produkt testen können, sowie die Dokumentation.

3. Einrichten des Projekts

Nachdem Sie einen Ordner für das Projekt erstellt haben, führen Sie die folgenden Befehle aus:

npm init -y
npm install got jsdom

Um die Anfragen zu stellen, installieren wir das got-Modul, und für unsere HTML-Parsing-Anforderungen verwenden wir das jsdom-Paket.

Erstellen Sie eine neue Datei namens „index.js“ und öffnen Sie sie.

4. Die Anfrage stellen

Lassen Sie uns die Parameter festlegen, die Anfrage stellen und den HTML-Code parsen. Schreiben Sie die folgenden Zeilen in die zuvor erstellte Datei:

const {JSDOM} = require("jsdom")
const got = require("got")

(async () => {
const params = {
       api_key: "YOUR_API_KEY",
       url: "https://www.airbnb.com/s/Berlin/homes?tab_id=home_tab&refinement_paths%5B%5D=%2Fhomes&flexible_trip_dates%5B%5D=april&flexible_trip_dates%5B%5D=may&flexible_trip_lengths%5B%5D=weekend_trip&date_picker_type=calendar&source=structured_search_input_header&search_type=filter_change&place_id=ChIJAVkDPzdOqEcRcDteW0YgIQQ&checkin=2021-04-01&checkout=2021-04-08"
   }

   const response = await got('https://api.webscrapingapi.com/v1', {searchParams: params})
const {document} = new JSDOM(response.body).window

   const places = document.querySelectorAll('._gig1e7')

})()

Wie bereits erwähnt, befinden sich alle relevanten Informationen unter dem Element _gigle7, daher werden wir alle Elemente abrufen, die der Klasse _gigle7 zugeordnet sind. Sie können die Ausgabe auf dem Bildschirm anzeigen, indem Sie direkt nach der Zeile, in der wir die Variablen definieren, eine console.log()-Anweisung einfügen.

console.log(places)

5. Abrufen der Daten im JSON-Format

Von hier an werden wir tiefer in die Materie einsteigen, um die spezifischen Elemente zu extrahieren, die Informationen zu Preis, Bildtyp und Bewertung enthalten.

Fügen Sie nach den zuvor vorgestellten Codezeilen Folgendes ein:

const results = []

   places.forEach(place => {

       if (place) {
           const price = place.querySelector('._ls0e43')
           if (price) place.price = price.querySelector('._krjbj').innerHTML

           const image = place.querySelector('._91slf2a')
           if (image) place.image = image.src

           const type = place.querySelector('._b14dlit')
           if (type) place.type = type.innerHTML

           const rating = place.querySelector('._10fy1f8')
           if (rating) place.rating = rating.innerHTML

           results.push(place)
       }

   })

console.log(results)

Wie du sehen kannst, rufen wir für jedes Inserat, das wir auf der ersten Seite finden, das Preis-Element, den Speicherort der Bildquelle, den Typ des Inserats und die Bewertung ab. Am Ende erhalten wir ein Array von Objekten, von denen jedes alle Elemente dieser Liste enthält.

Nachdem wir nun den gesamten Code geschrieben haben, der zum Scrapen der Airbnb-Informationen erforderlich ist, sollte die Datei index.js in etwa so aussehen:

const {JSDOM} = require("jsdom");
const got = require("got");

(async () => {
   const params = {
       api_key: "YOUR_API_KEY",
       url: "https://www.airbnb.com/s/Berlin/homes?tab_id=home_tab&refinement_paths%5B%5D=%2Fhomes&flexible_trip_dates%5B%5D=april&flexible_trip_dates%5B%5D=may&flexible_trip_lengths%5B%5D=weekend_trip&date_picker_type=calendar&source=structured_search_input_header&search_type=filter_change&place_id=ChIJAVkDPzdOqEcRcDteW0YgIQQ&checkin=2021-04-01&checkout=2021-04-08"
   }

   const response = await got('https://api.webscrapingapi.com/v1', {searchParams: params})

   const {document} = new JSDOM(response.body).window

   const places = document.querySelectorAll('._gig1e7')
   const results = []

   places.forEach(place => {

       if (place) {
           const price = place.querySelector('._ls0e43')
           if (price) place.price = price.querySelector('._krjbj').innerHTML

           const image = place.querySelector('._91slf2a')
           if (image) place.image = image.src

           const type = place.querySelector('._b14dlit')
           if (type) place.type = type.innerHTML

           const rating = place.querySelector('._10fy1f8')
           if (rating) place.rating = rating.innerHTML

           results.push(place)
       }

   })

   console.log(results)

})()

Wie Sie sehen, ist das Scrapen von Airbnb-Daten mit der WebScrapingAPI ziemlich einfach.

  • Senden Sie eine Anfrage an die WebScrapingAPI mit den erforderlichen Parametern: dem API-Schlüssel und der URL, von der wir Daten scrapen möchten.
  • Laden Sie das DOM mit JSDOM.
  • Wählen Sie alle Einträge aus, indem Sie die spezifische Klasse finden.
  • Rufe für jedes Inserat den Preis, das Bild, den Inserattyp und die Bewertung ab.
  • Fügen Sie jeden Eintrag einem neuen Array namens „results“ hinzu.
  • Geben Sie das neu erstellte Array „results“ auf dem Bildschirm aus.

Die Ausgabe sollte in etwa so aussehen:

[
  HTMLDivElement {
    price: '$47 per night, originally $67',
    image: 'https://a0.muscache.com/im/pictures/miso/Hosting-46812239/original/c56d6bb5-3c2f-4374-ac01-ca84a50d31cc.jpeg?im_w=720',
    type: 'Room in serviced apartment in Friedrichshain',
    rating: '4.73'
  },
  HTMLDivElement {
    price: '$82 per night, originally $109',
    image: 'https://a0.muscache.com/im/pictures/miso/Hosting-45475252/original/f6bd7cc6-f72a-43ef-943e-deba27f8253d.jpeg?im_w=720',
    type: 'Entire serviced apartment in Mitte',
    rating: '4.80'
  },
  HTMLDivElement {
    price: '$97 per night, originally $113',
    image: 'https://a0.muscache.com/im/pictures/92966859/7deb381e_original.jpg?im_w=720',
    type: 'Entire apartment in Mitte',
    rating: '4.92'
  },
  HTMLDivElement {
    price: '$99 per night, originally $131',
    image: 'https://a0.muscache.com/im/pictures/f1b953ca-5e8a-4fcd-a224-231e6a92e643.jpg?im_w=720',
    type: 'Entire apartment in Prenzlauer Berg',
    rating: '4.90'
  },
  HTMLDivElement {
    price: '$56 per night, originally $61',
    image: 'https://a0.muscache.com/im/pictures/bb0813a6-e9fe-4f0a-81a8-161440085317.jpg?im_w=720',
    type: 'Entire apartment in Tiergarten',
    rating: '4.67'
  },
...
]

Eine der Einschränkungen, mit denen wir derzeit konfrontiert sind, besteht darin, dass wir die Informationen nur von einer Seite unserer Suche scrapen. Dies lässt sich beheben, indem man einen Headless-Browser wie Puppeteer oder ein Browser-Automatisierungstool wie Selenium verwendet. Damit können wir die meisten Aufgaben ausführen, die wir manuell in einem Webbrowser erledigen können, wie zum Beispiel das Ausfüllen eines Formulars oder das Klicken auf eine Schaltfläche.

Wir empfehlen dir, unseren ultimativen Leitfaden zum Web-Scraping mit JavaScript und Node.js zu lesen, wenn du mehr über diese Technologien erfahren möchtest.

Die Leistungsfähigkeit von Web Scraping

Wie du siehst, ist es uns gelungen, in nur wenigen Minuten einen einfachen Web-Scraper zu erstellen. Von hier an sind deiner Fantasie keine Grenzen gesetzt. Wenn du ehrgeizig genug bist, kannst du die gesammelten Daten sogar nutzen, um die Verteilung und Konzentration der Immobilien auf einer Karte zu visualisieren. Airbnb stellt dir alle notwendigen Informationen am Anfang jeder Angebotsseite zur Verfügung.

Wie Sie gesehen haben, kann Web-Scraping eine der unterhaltsamsten Möglichkeiten sein, Ihre Zeit als Softwareentwickler zu verbringen. Sie können ganz einfach alle Daten abrufen, die Sie benötigen, um eine neue Anwendung für eine bestimmte Nische zu erstellen oder einfach Ihre Fähigkeiten zu trainieren. Sollten Sie Probleme mit dem Vorgang haben, zögern Sie nicht, in den Kommentaren um Hilfe zu bitten – wir helfen Ihnen gerne weiter!

Falls dieser Artikel Ihnen nicht dabei geholfen hat, die Möglichkeiten des Web-Scrapings vollständig zu verstehen, können Sie sich ein weiteres Beispiel ansehen, wie Unternehmen Schritt für Schritt einen Web-Scraper erstellen können.

Vielen Dank für Ihre Zeit! Viel Spaß beim Scraping!

Über den Autor

Robert Sfichi, Full-Stack-Entwickler @ WebScrapingAPI

Robert Sfichi

Full-Stack-Entwickler

Robert Sfichi ist Teammitglied bei WebScrapingAPI, wo er an der Produktentwicklung mitwirkt und dabei hilft, zuverlässige Lösungen zu entwickeln, die die Plattform und ihre Nutzer unterstützen.

Alternatives Data Scraping für das Finanzwesen: Wie Webdaten Anlegern einen Vorteil verschaffen
Anwendungsfälle

Alternatives Data Scraping für das Finanzwesen: Wie Webdaten Anlegern einen Vorteil verschaffen

TL;DR: Alternatives Data Scraping nutzt Web-Sammeltechniken, um nicht-traditionelle Datensätze (Produktpreise, Stimmungen, Stellenausschreibungen, behördliche Einreichungen) zu sammeln, die Marktsignale offenbaren, bevor sie in Gewinnberichten erscheinen. Dieser Leitfaden führt Sie durch die wertvollsten Datenquellen, den Aufbau von Pipelines für die Finanzbranche, die Validierung der Datenqualität und die Compliance-Leitplanken, die Sie benötigen, um auf der richtigen Seite des Gesetzes zu bleiben.

Mihnea-Octavian Manolache15 min read
Artikel lesen
Was sind Finanzdaten? Arten, Erhebungsmethoden und Analysewerkzeuge
Anwendungsfälle

Was sind Finanzdaten? Arten, Erhebungsmethoden und Analysewerkzeuge

TL;DR: Finanzdaten sind die Sammlung von quantitativen Aufzeichnungen (Einnahmen, Ausgaben, Vermögenswerte, Verbindlichkeiten, Cashflow), die Organisationen und Einzelpersonen nutzen, um fundierte wirtschaftliche Entscheidungen zu treffen. Dieser Leitfaden schlüsselt die vier wichtigsten Finanzdaten auf, vergleicht traditionelle und alternative Datenquellen, geht auf moderne Erhebungsmethoden ein und behandelt die Instrumente, die Fachleute für die Analyse verwenden.

Suciu Dan12 min read
Artikel lesen
XPath vs. CSS-Selektoren: Die Wahl des richtigen Selektors
Anwendungsfälle

XPath vs. CSS-Selektoren: Die Wahl des richtigen Selektors

TL;DR: XPath- und CSS-Selektoren lokalisieren beide DOM-Elemente, aber sie lösen unterschiedliche Probleme. CSS-Selektoren sind schneller und besser lesbar für einfache Auswahlen. XPath gewinnt, wenn Sie das DOM in beliebiger Richtung durchlaufen, Textinhalte abgleichen oder komplexe bedingte Logik verarbeiten müssen. Die meisten Produktionsprojekte profitieren vom strategischen Einsatz beider Methoden.

Mihai Maxim13 min read
Artikel lesen

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.