HTML-Parsing in Node.js: Überblick über die besten Bibliotheken und Tools

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

HTML-Parsing in JavaScript (Node.js): Auswahl des Tools für die Arbeit mit Webseiten



HTML-Parsing ist eine der Kernaufgaben bei der Entwicklung von Web-Scrapern, Inhaltsanalysatoren und automatisierten Tests. Im Node.js-Ökosystem gibt es mehrere leistungsstarke Bibliotheken, die jeweils ihre eigenen Stärken haben. In diesem Artikel betrachten wir drei Hauptwerkzeuge: cheerio, jsdom und htmlparser2, und analysieren, wann und welches davon am besten verwendet wird.



1. Cheerio — jQuery für den Server



Die Bibliothek cheerio ist die beliebteste Wahl für HTML-Parsing in Node.js. Sie bietet eine vertraute jQuery-ähnliche Syntax zur Navigation und Manipulation des DOM-Baums. Cheerio erstellt kein vollständiges Browser-DOM, sondern arbeitet mit einer leichten Abstraktion, was sie sehr schnell macht.



Hauptfunktionen:

  • Unterstützung von CSS-Selektoren (wie in jQuery)
  • Schnelles Parsen ohne Ausführung von JavaScript
  • Unveränderliche Methoden (ändern das ursprüngliche HTML nicht)
  • Arbeit mit Attributen, Text und HTML-Struktur


Anwendungsbeispiel:

const cheerio = require('cheerio');const html = '<div class="content"><h1>Hallo, Welt!</h1><p>Artikeltext</p></div>';

const $ = cheerio.load(html);const title = $('h1').text();const paragraphs = $('p').map((i, el) => $(el).text()).get();

console.log(title); // "Hallo, Welt!"console.log(paragraphs); // ["Artikeltext"]


2. JSDOM — Vollwertiger Browser in Node.js



Wenn Sie nicht nur statisches HTML parsen, sondern auch JavaScript-Skripte ausführen, Ereignisse emulieren oder mit modernen APIs (z. B. fetch, localStorage) arbeiten müssen, dann ist jsdom Ihre Wahl. Es erstellt eine vollständige Browserumgebung, was maximale Kompatibilität bietet, aber mehr Ressourcen erfordert.



Wann jsdom verwenden:

  • Websites mit dynamischem Inhalt (SPA mit React/Vue)
  • Notwendigkeit, Skripte der Seite auszuführen
  • Testen von Webkomponenten
  • Arbeit mit Ereignissen und asynchronen Operationen


Parsing-Beispiel:

const { JSDOM } = require('jsdom');const html = '<html><body><div id="app">Inhalt</div></body></html>';

const dom = new JSDOM(html);const document = dom.window.document;const content = document.getElementById('app').textContent;

console.log(content); // "Inhalt"


3. Htmlparser2 — Maximale Leistung



Die Bibliothek htmlparser2 ist ein Low-Level-Parser, der auf Ereignisbasis arbeitet (SAX-ähnlicher Ansatz). Er erstellt keinen DOM-Baum, sondern generiert Ereignisse beim Auftreten jedes Tags, Attributs oder Textknotens. Dies macht ihn zum schnellsten Parser in Node.js.



Besonderheiten:

  • Streaming-Verarbeitung (Dateien im Gigabyte-Bereich können geparst werden)
  • Minimaler Speicherverbrauch
  • Unterstützung von XML und HTML
  • Keine integrierten Navigationsmethoden (eigene Logik erforderlich)


Anwendungsbeispiel:

const htmlparser2 = require('htmlparser2');const html = '<div class="item">Produkt 1</div><div class="item">Produkt 2</div>';

const items = [];const parser = new htmlparser2.Parser({ onopentag(name, attribs) { if (name === 'div' && attribs.class === 'item') { this.currentItem = ''; } }, ontext(text) { if (this.currentItem !== undefined) { this.currentItem += text; } }, onclosetag(name) { if (name === 'div' && this.currentItem !== undefined) { items.push(this.currentItem.trim()

Empfehlungen