Zurück zum Blog
Anleitungen
Sergiu InizianLast updated on Mar 31, 20269 min read

Cheerio vs. Puppeteer: Leitfaden zur Auswahl des besten Web-Scraping-Tools

Cheerio vs. Puppeteer: Leitfaden zur Auswahl des besten Web-Scraping-Tools

Sind Sie gerade dabei, sich für ein Tool zum Web-Scraping zu entscheiden? Die Wahl zwischen all den verschiedenen Optionen kann schwierig sein, aber keine Sorge – ich helfe Ihnen gerne weiter. In diesem Artikel schauen wir uns Cheerio und Puppeteer genauer an, zwei beliebte Tools für das Web-Scraping.

Cheerio ist eine Bibliothek zum Parsen und Bearbeiten von HTML-Dokumenten, während Puppeteer eine Bibliothek zur Steuerung eines Headless-Chrome-Browsers ist. Mit Cheerio können Sie Elemente mithilfe einer jQuery-ähnlichen Syntax auswählen, während Puppeteer für Aufgaben wie Web-Scraping, Tests und die Automatisierung von Formularübermittlungen eingesetzt werden kann.

Also, lassen Sie uns loslegen und uns ans Web-Scraping machen!

Was ist Cheerio?

Cheerio ist eine JavaScript-Bibliothek, die HTML-Dokumente parst und bearbeitet und es Ihnen ermöglicht, Elemente innerhalb eines Dokuments mithilfe einer jQuery-ähnlichen Syntax auszuwählen, zu ändern und Aktionen darauf auszuführen.

Cheerio ist leichtgewichtig und einfach zu bedienen, was es zu einer guten Wahl für einfache Web-Scraping-Aufgaben macht. Es ist zudem schneller als die Verwendung eines vollständigen Browsers wie Chrome oder Firefox, da es nicht alle Assets und Ressourcen laden muss. Dies macht es ideal für das Extrahieren von Daten aus einem HTML-Dokument.

Cheerio verfügt über viele Funktionen und Vorteile, die es zu einer beliebten Wahl für das Web-Scraping machen. Zu den wichtigsten Funktionen und Vorteilen von Cheerio gehören:

  • Leichtgewichtig und benutzerfreundlich: Cheerio ist auf Leichtigkeit und Benutzerfreundlichkeit ausgelegt, was es zu einer hervorragenden Wahl für einfache Web-Scraping-Aufgaben macht. Seine Syntax ähnelt jQuery, das vielen Entwicklern vertraut ist, und ermöglicht es Ihnen, Elemente in einem HTML-Dokument mit nur wenigen Zeilen Code auszuwählen und zu bearbeiten.
  • Schnell: Cheerio ist schneller als die Verwendung eines vollwertigen Browsers für das Web-Scraping, da es nicht alle Assets und Ressourcen laden muss, die ein Browser laden würde. Dies macht es zu einer guten Wahl für Aufgaben, bei denen Geschwindigkeit wichtig ist.
  • Unterstützung für HTML- und XML-Dokumente: Cheerio kann sowohl HTML- als auch XML-Dokumente analysieren und bearbeiten, was Ihnen die Flexibilität gibt, je nach Bedarf mit verschiedenen Dokumenttypen zu arbeiten.
  • Kombinierbar mit anderen Tools: Cheerio lässt sich mit anderen Tools wie der Fetch-API oder Axios kombinieren, um Web-Scraping-Aufgaben durchzuführen. So können Sie Ihren Workflow an Ihre spezifischen Anforderungen anpassen und die besten Tools für die jeweilige Aufgabe einsetzen.

Was ist Puppeteer?

Puppeteer ist eine Node.js-Bibliothek, die eine High-Level-API zur Steuerung eines headless Chrome-Browsers bereitstellt. Damit können Sie Aufgaben in Chrome automatisieren, ohne tatsächlich ein Chrome-Fenster zu öffnen, was den Ressourcenverbrauch Ihres Scrapers reduziert.

Sie können Puppeteer nutzen, um Aktionen wie das Ausfüllen von Formularen, das Anklicken von Schaltflächen und das Extrahieren von Daten aus Websites durchzuführen.

Einer der Hauptvorteile von Puppeteer besteht darin, dass es Ihnen ermöglicht, mit Websites auf eine Weise zu interagieren, die der eines menschlichen Nutzers ähnelt. Dies macht es zu einer guten Wahl für Aufgaben, die komplexere Interaktionen mit einer Website erfordern, wie zum Beispiel das Einloggen, das Navigieren durch Seiten und das Ausfüllen von Formularen.

Puppeteer verfügt über mehrere Funktionen und Vorteile, die es zu einer beliebten Wahl für Web-Scraping und Automatisierung machen. Zu den wichtigsten Funktionen und Vorteilen von Puppeteer gehören:

  • Hochrangige API: Puppeteer bietet eine hochrangige API, die einfach zu verwenden und zu verstehen ist. Dies macht es zu einer guten Wahl für Entwickler, die noch keine Erfahrung mit Web-Scraping oder Automatisierung haben.
  • Steuerung eines Headless-Chrome-Browsers: Mit Puppeteer können Sie einen Headless-Chrome-Browser steuern, was bedeutet, dass Sie Aufgaben in Chrome automatisieren können, ohne tatsächlich ein Chrome-Fenster zu öffnen. Dies macht es zu einer guten Wahl für Aufgaben, die komplexere Interaktionen mit einer Website erfordern.
  • Imitiert menschliches Verhalten: Puppeteer kann menschliches Verhalten imitieren, wie zum Beispiel das Klicken auf Schaltflächen, das Scrollen und das Ausfüllen von Formularen. Dies macht es zu einer guten Wahl für Aufgaben, die komplexere Interaktionen mit einer Website erfordern.
  • Unterstützung moderner Webfunktionen: Puppeteer bietet vollständige Unterstützung für moderne Webfunktionen wie JavaScript, Cookies und CAPTCHAs. Dies macht es zu einer guten Wahl für Aufgaben, die diese Funktionen erfordern.
  • Kann in Kombination mit anderen Tools verwendet werden: Puppeteer kann in Kombination mit anderen Tools wie Cheerio verwendet werden, um Web-Scraping-Aufgaben durchzuführen. So können Sie Ihren Workflow an Ihre spezifischen Anforderungen anpassen und die besten Tools für die jeweilige Aufgabe einsetzen.

Unterschiede zwischen Cheerio und Puppeteer

Cheerio und Puppeteer sind beide beliebte Tools für das Web-Scraping, weisen jedoch einige wesentliche Unterschiede auf, die sie für bestimmte Aufgaben besser geeignet machen. Hier sind einige der wichtigsten Unterschiede zwischen Cheerio und Puppeteer:

  • Leistung: Cheerio ist im Allgemeinen schneller als Puppeteer, da es nicht alle Assets und Ressourcen laden muss, die ein Browser laden würde. Puppeteer hat jedoch den Vorteil, dass es mit Websites auf eine Weise interagieren kann, die der eines menschlichen Benutzers ähnelt, was es für bestimmte Aufgaben schneller machen kann.
  • Funktionalität: Cheerio eignet sich gut für einfache Web-Scraping-Aufgaben, bei denen Daten aus HTML- oder XML-Dokumenten extrahiert werden. Puppeteer ist leistungsfähiger und kann Aufgaben in einem Headless-Chrome-Browser automatisieren, wie z. B. das Einloggen, das Navigieren zwischen Seiten und das Ausfüllen von Formularen.
  • Benutzerfreundlichkeit: Cheerio verfügt über eine Syntax, die jQuery ähnelt, das vielen Entwicklern vertraut ist. Dies macht die Nutzung für diejenigen einfach, die bereits mit jQuery vertraut sind. Puppeteer verfügt ebenfalls über eine benutzerfreundliche High-Level-API, erfordert jedoch mehr Einrichtung und Konfiguration als Cheerio.

Insgesamt hängt die Wahl zwischen Cheerio und Puppeteer von den spezifischen Anforderungen Ihrer Web-Scraping-Aufgabe ab. Wenn Sie lediglich einige Daten aus einem HTML-Dokument extrahieren müssen und die Leistung eine Rolle spielt, ist Cheerio möglicherweise die bessere Wahl. Wenn Sie Automatisierung benötigen, ist Puppeteer die richtige Wahl.

Node.JS überprüfen oder installieren

Bevor wir beginnen, stellen Sie sicher, dass Node.JS auf Ihrem Rechner installiert ist. Die in diesem Artikel verwendete Node-Version ist 18.9.0. Führen Sie diesen Befehl aus, um Ihre lokale Version zu überprüfen:

node -v

Falls eine Fehlermeldung erscheint, laden Sie Node.js von der offiziellen Website herunter und installieren Sie es. Dabei wird auch `npm`, der Paketmanager für Node.js, installiert.

Einrichten des Projekts

Öffnen Sie das Terminal und erstellen Sie einen neuen Ordner namens `scraper`. Wechseln Sie in dieses Verzeichnis und führen Sie den Befehl `npm init` aus. Dadurch wird eine `package.json`-Datei für Ihr Projekt erstellt, die Metadaten wie Name, Version und Abhängigkeiten enthält.

Folgen Sie den Anweisungen, um Informationen zu Ihrem Projekt einzugeben. Sie können die Eingabetaste drücken, um die Standardwerte für jede Eingabeaufforderung zu übernehmen, oder Sie können Ihre eigenen Werte eingeben.

Sie können nun mit der Installation der Abhängigkeiten und der Erstellung von Dateien für Ihr Projekt beginnen:

npm install cheerio puppeteer

Die Abhängigkeiten werden im Verzeichnis `node_modules` Ihres Projekts installiert und außerdem dem Abschnitt „dependencies“ Ihrer Datei `package.json` hinzugefügt.

Ein Ziel definieren

In diesem Artikel werden wir einen Artikel von ArsTechnica scrapen und den Titel des Artikels, die URL des Titelbildes sowie den ersten Absatz aus dem Artikeltext extrahieren.

Grundkurs zur Datenextraktion

Gehen Sie zunächst auf die Zielwebsite und öffnen Sie einen Artikel. Klicken Sie mit der rechten Maustaste auf den Artikeltitel und wählen Sie „Inspect“ (Untersuchen). Dadurch werden die Entwicklertools geöffnet und das HTML-Element für das Heading-Tag hervorgehoben.

Gemäß bewährten SEO-Praktiken sollte eine Seite nur ein H1-Element enthalten. Daher kann `h1` als zuverlässiger Selektor für den Titel verwendet werden.

Um den Selektor für das Titelbild auszuwählen, verwenden Sie das Inspektions-Tool. Das Bild ist in ein `figure`-Tag eingeschlossen, daher ist es ratsam, das übergeordnete Element in den Selektor aufzunehmen. Der endgültige Selektor lautet `figure img`.

Zu guter Letzt müssen wir noch den Selektor für den ersten Absatz finden.

Da der erste Absatz nicht das erste untergeordnete Element des übergeordneten Elements ist, wird ein zusätzlicher CSS-Selektor benötigt. Das übergeordnete Element hat eine Klasse namens `article-content`. Wir können diese Klasse zusammen mit dem Selektor `:first-of-type` verwenden, um unseren endgültigen Selektor zu erstellen: `.article-content p:first-of-type`.

Hier ist die endgültige Liste mit den Selektoren:

  • Titel: `h1`
  • Titelbild: `figure img`
  • Erster Absatz: `.article-content p:first-of-type`

Erstellen des Scrapers

Nachdem wir nun die Abhängigkeiten im Projekt haben, schauen wir uns an, wie man Cheerio und Puppeteer gemeinsam nutzt, um einen Web-Scraper zu erstellen. Durch die Kombination dieser beiden Tools kannst du einen Scraper erstellen, der sowohl schnell als auch leistungsstark ist – also legen wir los!

Erstellen Sie eine Datei mit dem Namen `scrape.js` und fügen Sie den folgenden Code ein:

const puppeteer = require('puppeteer');

const cheerio = require('cheerio');

async function scrape() {

    // Launch a headless Chrome browser

    const browser = await puppeteer.launch();

    // Create a new page

    const page = await browser.newPage();

    // Navigate to the website you want to scrape

    await page.goto('https://arstechnica.com/tech-policy/2023/01/musk-led-twitter-faces-another-lawsuit-alleging-it-failed-to-pay-bills/');

    // Wait for the page to load

    await page.waitForSelector('h1');

    // Extract the HTML of the page

    const html = await page.evaluate(() => document.body.innerHTML);

    // Use Cheerio to parse the HTML

    const $ = cheerio.load(html);

    // Extract the title, cover image, and paragraph using Cheerio's syntax

    const title = $('h1').text();

    const paragraph = $('.article-content p:first-of-type').text()

    const coverImage = $('figure img').attr('src');

    // Display the data we scraped

    console.log({

        title,

        paragraph,

        coverImage

    });

    // Close the browser

    await browser.close();

}

scrape();

Sie können den Code mit dem Befehl `node scrape.js` ausführen. Die Ausgabe sollte den Titel des Artikels und die URL des Titelbildes anzeigen und wie folgt aussehen:

{

  title: 'Lawsuit: Twitter failed to pay $136,000 in rent at San Francisco office tower',

  paragraph: 'The Elon Musk-owned Twitter is facing another lawsuit alleging that it failed to pay its bills.',

  coverImage: 'https://cdn.arstechnica.net/wp-content/uploads/2023/01/getty-musk-twitter-800x533.jpg'

}

Auf die nächste Stufe

Nachdem Sie nun gelernt haben, wie Sie mit Puppeteer und Cheerio grundlegende Daten von einer einzelnen Webseite scrapen, ist es an der Zeit, Ihre Web-Scraping-Fähigkeiten auf die nächste Stufe zu heben. So können Sie diesen einfachen Scraper in einen hochmodernen verwandeln:

  • Eine ganze Kategorie scrapen: Indem Sie die URL und die Selektoren in Ihrem Code anpassen, können Sie die Artikel einer Kategorie scrapen. Dies ist nützlich, um große Datenmengen zu scrapen oder um Aktualisierungen einer bestimmten Inhaltskategorie im Blick zu behalten.
  • Verwendung eines anderen User-Agents bei jeder Anfrage: Indem du den User-Agent deines Scrapers änderst, kannst du Einschränkungen umgehen und menschliches Verhalten besser nachahmen. Dies kann nützlich sein, um Websites zu scrapen, die Anfragen basierend auf dem User-Agent blockieren oder drosseln.
  • Ein Proxy-Netzwerk integrieren: Ein Proxy-Netzwerk kann Ihnen helfen, IP-Adressen zu rotieren und eine Erkennung zu vermeiden. Dies ist besonders nützlich beim Scraping von Websites, die IPs blockieren oder Anfragen begrenzen.
  • Lösen von Captchas: Einige Websites verwenden Captchas, um automatisiertes Scraping zu verhindern. Es gibt verschiedene Möglichkeiten, Captchas zu umgehen, beispielsweise die Nutzung eines Captcha-Lösungsdienstes oder die Implementierung eines Machine-Learning-Modells zur Erkennung und Lösung von Captchas.

Zusammenfassung

Mittlerweile sollten Sie ein gutes Verständnis für die Stärken und Grenzen von Cheerio und Puppeteer haben und in der Lage sein, eine fundierte Entscheidung darüber zu treffen, welches Tool am besten zu Ihren Anforderungen passt. Es gibt ein Web-Scraping-Tool für Sie, egal ob Sie Anfänger oder erfahrener Entwickler sind.

Wenn Sie tiefer in Cheerio einsteigen möchten, lesen Sie diesen Artikel, der von einem meiner Kollegen verfasst wurde. Er behandelt Themen wie das Identifizieren von Knoten mithilfe von „Inspect Element“, das Speichern der Ergebnisse auf der Festplatte und das Scraping einer großen Website wie Reddit im Detail.

Wir haben die Funktionen von Puppeteer bisher nur kurz angesprochen. Wenn Sie mehr erfahren möchten, bietet dieser Artikel einen tieferen Einblick und behandelt Themen wie das Erstellen von Screenshots, das Absenden von Formularen und das Scraping mehrerer Seiten.

Wir hoffen, dass dieser Artikel Ihnen geholfen hat, die verfügbaren Optionen zu verstehen und die beste Entscheidung für Ihre Web-Scraping-Anforderungen zu treffen.

Eine noch einfachere Alternative

Wir haben zwar die Stärken und Grenzen von Cheerio und Puppeteer besprochen, doch gibt es noch eine weitere Option, die Sie in Betracht ziehen könnten: die Nutzung eines Scrapers als Dienst wie WebScrapingAPI.

Die Nutzung eines solchen Dienstes bietet mehrere Vorteile:

  • Sie können darauf vertrauen, dass der Scraper zuverlässig und gut gewartet ist: Der Scraper verfügt über dedizierte Ressourcen, um sicherzustellen, dass er auf dem neuesten Stand ist und korrekt funktioniert. Dies kann Ihnen im Vergleich zur Entwicklung und Wartung eines eigenen Scrapers viel Zeit und Mühe sparen.
  • Ein Web-Scraper-Dienst ist oft kostengünstiger als die Entwicklung eines eigenen: Sie müssen nicht in die Entwicklung und Wartung des Scrapers investieren und können alle speziellen Funktionen oder den Support nutzen, die das Unternehmen anbietet.
  • Entdeckt zu werden ist kein Problem mehr: Ein Premium-Web-Scraper vermeidet die Erkennung und kann Websites oft effektiver und effizienter scrapen als ein selbst erstellter Scraper. Das spart Ihnen Zeit und ermöglicht es Ihnen, sich auf die Analyse und Nutzung der gescrapten Daten zu konzentrieren.

Wir empfehlen Ihnen, unseren Web-Scraper auszuprobieren und sich selbst von den Vorteilen eines bewährten und zuverlässigen Tools zu überzeugen. Erstellen Sie jetzt ein kostenloses Konto.

Über den Autor
Sergiu Inizian, Autor für technische Inhalte @ WebScrapingAPI
Sergiu InizianAutor für technische Inhalte

Sergiu Inizian ist Technical Content Writer bei WebScrapingAPI und verfasst verständliche, praxisorientierte Inhalte, die Entwicklern helfen, das Produkt zu verstehen und effektiv zu nutzen.

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.