Cheerio vs. Puppeteer: Leitfaden für die Auswahl des besten Web Scraping Tools

Suciu Dan am 11. April 2023

blog-image

Versuchen Sie zu entscheiden, welches Tool Sie für Web Scraping verwenden sollen? Es kann schwierig sein, zwischen all den verschiedenen Optionen zu wählen, aber keine Sorge - ich bin hier, um zu helfen. In diesem Artikel werfen wir einen genaueren Blick auf Cheerio und Puppeteer, zwei beliebte Tools für Web Scraping.

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

Also, lasst uns eintauchen und loskratzen!

Was ist Cheerio?

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

Cheerio ist leichtgewichtig und benutzerfreundlich, was es zu einer guten Wahl für einfache Web-Scraping-Aufgaben macht. Er ist auch schneller als ein vollständiger Browser wie Chrome oder Firefox, da er nicht alle Assets und Ressourcen laden muss. Dies macht es ideal für die Extraktion von Daten aus einem HTML-Dokument.

Cheerio hat viele Funktionen und Vorteile, die es zu einer beliebten Wahl für Web Scraping machen. Einige der wichtigsten Funktionen und Vorteile von Cheerio sind:

  • Leichtgewichtig und einfach zu bedienen: Cheerio ist leichtgewichtig und benutzerfreundlich, was es zu einer guten Wahl für einfache Web-Scraping-Aufgaben macht. Seine Syntax ähnelt der von jQuery, die 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 Web Scraping, da es nicht alle Assets und Ressourcen laden muss, die ein Browser laden würde. Das 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, so dass Sie je nach Bedarf flexibel mit verschiedenen Dokumenttypen arbeiten können.
  • Kann in Kombination mit anderen Tools verwendet werden: Cheerio kann in Kombination mit anderen Tools wie der Fetch API oder Axios verwendet werden, um Web-Scraping-Aufgaben durchzuführen. So können Sie Ihren Arbeitsablauf an Ihre spezifischen Bedürfnisse anpassen und die besten Tools für die jeweilige Aufgabe verwenden.

Was ist Puppenspieler?

Puppeteer ist eine Node.js-Bibliothek, die eine High-Level-API zur Steuerung eines Headless Chrome-Browsers bietet. Sie ermöglicht es Ihnen, Aufgaben in Chrome zu automatisieren, ohne ein Chrome-Fenster zu öffnen, wodurch die Anzahl der Ressourcen, die Ihr Scraper verbraucht, reduziert wird.

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

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

Puppeteer hat mehrere Funktionen und Vorteile, die es zu einer beliebten Wahl für Web Scraping und Automatisierung machen. Einige der wichtigsten Funktionen und Vorteile von Puppeteer sind:

  • Hochentwickelte API: Puppeteer bietet eine einfach zu verwendende und verständliche API. Das macht es zu einer guten Wahl für Entwickler, die neu im Bereich Web Scraping oder Automatisierung sind.
  • Kontrolle über einen kopflosen Chrome-Browser: Mit Puppeteer können Sie einen kopflosen Chrome-Browser steuern, d. h. Sie können Aufgaben in Chrome automatisieren, 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.
  • Ahmt menschliches Verhalten nach: Puppeteer kann menschliches Verhalten imitieren, z. B. das Klicken auf Schaltflächen, Scrollen und Ausfüllen von Formularen. Das macht ihn zu einer guten Wahl für Aufgaben, die komplexere Interaktionen mit einer Website erfordern.
  • Unterstützung für moderne Webfunktionen: Puppeteer bietet volle Unterstützung für moderne Webfunktionen wie JavaScript, Cookies und CAPTCHAs. Das 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. Auf diese Weise können Sie Ihren Arbeitsablauf an Ihre spezifischen Bedürfnisse anpassen und die besten Tools für die jeweilige Aufgabe verwenden.

Unterschiede zwischen Cheerio und Puppeteer

Cheerio und Puppeteer sind beides beliebte Tools für Web-Scraping, aber sie haben einige wichtige Unterschiede, die sie für bestimmte Aufgaben besser geeignet machen. Hier sind einige der Hauptunterschiede zwischen Cheerio und Puppeteer:

  • Leistung: Cheerio ist in der Regel 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 Art und Weise interagieren kann, die der eines menschlichen Benutzers ähnelt, was es für bestimmte Aufgaben schneller machen kann.
  • Funktionsweise: Cheerio eignet sich 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, z. B. das Einloggen, Navigieren auf Seiten und Ausfüllen von Formularen.
  • Einfacher Gebrauch: Cheerio hat eine ähnliche Syntax wie jQuery, die vielen Entwicklern vertraut ist. Dadurch ist es für diejenigen, die bereits mit jQuery vertraut sind, einfach zu verwenden. Puppeteer verfügt ebenfalls über eine einfach zu bedienende High-Level-API, die jedoch mehr Einrichtungs- und Konfigurationsaufwand erfordert als Cheerio.

Insgesamt hängt die Entscheidung zwischen Cheerio und Puppeteer von den spezifischen Anforderungen Ihrer Web-Scraping-Aufgabe ab. Wenn Sie nur einige Daten aus einem HTML-Dokument extrahieren müssen und die Leistung eine Rolle spielt, könnte Cheerio die bessere Wahl sein. Wenn Sie automatisieren müssen, ist Puppeteer die richtige Wahl.

Überprüfen oder Installieren von Node.JS

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:

Knoten -v

Wenn Sie eine Fehlermeldung erhalten, laden Sie Node.js von der offiziellen Website herunter und installieren Sie es . Dadurch 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". Rufen Sie das Verzeichnis auf und führen Sie den Befehl npm init aus. Dadurch wird eine "package.json"-Datei für Ihr Projekt erstellt, die Metadaten wie den Namen, die Version und die Abhängigkeiten enthält.

Folgen Sie den Aufforderungen zur Eingabe von Informationen über Ihr Projekt. Sie können auf "Enter" drücken, um die Standardwerte für jede Eingabeaufforderung zu akzeptieren, oder Sie können Ihre eigenen Werte nach Wunsch eingeben.

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

npm install cheerio puppeteer

Die Abhängigkeiten werden in das Verzeichnis `node_modules` Ihres Projekts installiert und auch in den Abschnitt dependencies Ihrer `package.json`-Datei aufgenommen.

Definition eines Ziels

Für diesen Artikel werden wir einen Artikel von ArsTechnica scrapen und den Titel des Artikels, die URL des Titelbildes und den ersten Absatz aus dem Text des Artikels extrahieren.

Grundlegender Crashkurs zur Datenextraktion

Rufen Sie zunächst die Ziel-Website auf und öffnen Sie einen Artikel. Klicken Sie mit der rechten Maustaste auf den Titel des Artikels und wählen Sie "Inspizieren". Dadurch werden die Entwicklertools geöffnet und das HTML-Element für den Überschrift-Tag hervorgehoben.

blog-image

Für eine gute SEO-Praxis sollte eine Seite nur ein H1-Element haben. 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 Werkzeug Inspect. Das Bild ist in ein `figure`-Tag eingeschlossen, daher ist es eine gute Idee, das übergeordnete Element in den Selektor aufzunehmen. Der endgültige Selektor ist "figure img".

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

blog-image

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 Selektoren:

  • Titel: "h1
  • Titelbild: `Figur img`
  • Erster Absatz: `.artikel-inhalt p:first-of-type`

Bau des Abstreifers

Jetzt, wo wir die Abhängigkeiten im Projekt haben, schauen wir uns an, wie man Cheerio und Puppeteer zusammen verwendet, um einen Web Scraper zu erstellen. Durch die Kombination dieser beiden Tools können Sie einen Scraper erstellen, der sowohl schnell als auch leistungsfähig ist - fangen wir also an!

Erstellen Sie eine Datei namens "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 bringen

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

  • Scraping einer ganzen Kategorie: Wenn Sie die URL und die Selektoren in Ihrem Code ändern, können Sie die Artikel einer Kategorie abrufen. Dies ist nützlich, um große Datenmengen zu scrapen oder um die Aktualisierungen einer bestimmten Kategorie von Inhalten zu verfolgen.
  • Verwendung eines anderen Benutzer-Agenten bei jeder Anfrage: Indem Sie den Benutzer-Agenten Ihres Scrapers ändern, können Sie Einschränkungen umgehen und menschliches Verhalten besser imitieren. Dies kann für das Scrapen von Websites nützlich sein, die Anfragen auf der Grundlage des Benutzeragenten blockieren oder drosseln.
  • Integration eines Proxynetzes: Ein Proxy-Netzwerk kann Ihnen helfen, IP-Adressen zu wechseln und eine Entdeckung zu vermeiden. Dies ist besonders nützlich für das Scraping von Websites, die IPs blockieren oder die Anzahl der Anfragen begrenzen.
  • Lösen von Captchas: Einige Websites verwenden Captchas, um automatisches Scraping zu verhindern. Es gibt mehrere Möglichkeiten, Captchas zu umgehen, z. B. die Nutzung eines Captcha-Lösungsdienstes oder die Implementierung eines maschinellen Lernmodells zur Erkennung und Lösung von Captchas.

Abschluss der Arbeiten

Inzwischen sollten Sie die Stärken und Grenzen von Cheerio und Puppeteer gut kennen und in der Lage sein, eine fundierte Entscheidung darüber zu treffen, welches Tool für Ihre Anforderungen am besten geeignet ist. Es gibt ein Web-Scraping-Tool für Sie, egal ob Sie ein Anfänger oder ein erfahrener Entwickler sind.

Wenn Sie tiefer in Cheerio eintauchen möchten, lesen Sie diesen Artikel, den einer meiner Kollegen geschrieben hat. Er behandelt Themen wie die Identifizierung von Knoten mit dem Inspect Element, das Speichern der Ergebnisse auf der Festplatte und das Scraping einer großen Website wie Reddit im Detail.

Wir haben die Möglichkeiten von Puppeteer nur kurz angerissen. Wenn Sie mehr erfahren möchten, finden Sie in diesem Artikel weitere Informationen, z. B. zum Erstellen eines Screenshots, zum Übermitteln eines Formulars und zum Scraping mehrerer Seiten.

Wir hoffen, dass dieser Artikel Ihnen geholfen hat, die zur Verfügung stehenden Möglichkeiten zu verstehen und die beste Entscheidung für Ihre Web-Scraping-Anforderungen zu treffen.

Eine Alternative, die noch einfacher ist

Während wir die Stärken und Grenzen von Cheerio und Puppeteer erörtert haben, gibt es eine weitere Option, die Sie in Betracht ziehen könnten: die Verwendung eines Scrapers als Dienst wie WebScrapingAPI.

Die Inanspruchnahme eines solchen Dienstes bringt mehrere Vorteile mit sich:

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

Probieren Sie unseren Web Scraper aus und überzeugen Sie sich selbst von den Vorteilen eines vertrauenswürdigen und zuverlässigen Tools. Erstellen Sie jetzt ein kostenloses Konto.

Nachrichten und Aktualisierungen

Bleiben Sie auf dem Laufenden mit den neuesten Web Scraping-Anleitungen und Nachrichten, indem Sie unseren Newsletter abonnieren.

We care about the protection of your data. Read our <l>Privacy Policy</l>.Privacy Policy.

Ähnliche Artikel

Vorschaubild
Wissenschaft des Web ScrapingWeb Scraping leicht gemacht: Die Bedeutung von Data Parsing

Erfahren Sie, wie Sie mit Hilfe von Datenparsing, HTML-Parsing-Bibliotheken und schema.org-Metadaten effizient Daten für Web-Scraping und Datenanalysen extrahieren und organisieren können.

Suciu Dan
Autorenavatar
Suciu Dan
12 Minuten lesen
Vorschaubild
AnwendungsfälleXPath vs. CSS-Selektoren

Sind XPath-Selektoren besser als CSS-Selektoren für Web Scraping? Erfahren Sie mehr über die Stärken und Grenzen der einzelnen Methoden und treffen Sie die richtige Wahl für Ihr Projekt!

Mihai Maxim
Autorenavatar
Mihai Maxim
8 Minuten lesen
Vorschaubild
LeitfädenWie man einen Scraper baut und eine Datei mit Puppeteer herunterlädt

Entdecken Sie 3 Möglichkeiten, wie Sie mit Puppeteer Dateien herunterladen und einen Web Scraper erstellen können, der genau das tut.

Mihnea-Octavian Manolache
Autorenavatar
Mihnea-Octavian Manolache
8 Minuten lesen