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

So extrahieren Sie Daten aus Airbnb-Inseraten

So extrahieren Sie Daten aus Airbnb-Inseraten

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 SfichiFull-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.

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.