Cheerio v1.2.0 Dokumentation
Cheerio ist eine schnelle, flexible und elegante Bibliothek zum Parsen und Manipulieren von HTML und XML auf der Server-Seite. Sie implementiert eine Teilmenge der jQuery-Kernfunktionalität und bietet eine vertraute API für Entwickler, während sie für Server-seitige Umgebungen optimiert ist.
Funktionen der aktuellen Version (1.2.0)
Kern-Lademethoden
Die aktuelle Version bietet mehrere leistungsstarke Möglichkeiten zum Laden und Parsen von HTML/XML-Dokumenten:
import * as cheerio from 'cheerio';
// Basic loading from string
const $ = cheerio.load('<h2 class="title">Hello world</h2>');
// Loading from buffer with encoding detection
const buffer = fs.readFileSync('index.html');
const $ = cheerio.loadBuffer(buffer);
// Loading from URL with automatic encoding detection
const $ = await cheerio.fromURL('https://example.com');
// Stream-based loading for large documents
const stream = cheerio.stringStream({}, (err, $) => {
if (!err) {
console.log($('h1').text());
}
});
Erweiterte TypeScript-Unterstützung
Version 1.2.0 enthält umfassende TypeScript-Definitionen mit verbesserter Typsicherheit:
import { CheerioAPI, Cheerio, Element } from 'cheerio';
// Strongly typed element selection
const $: CheerioAPI = cheerio.load(html);
const elements: Cheerio<Element> = $('.my-class');
Neue Extract API
Eine leistungsstarke neue Funktion zur Datenextraktion aus HTML-Dokumenten:
const data = $root.extract({
title: 'h1',
links: [{ selector: 'a', value: 'href' }],
metadata: {
selector: '.meta',
value: {
author: '.author',
date: '.date'
}
}
});
Erweiterte URL-Behandlung
Verbesserte Unterstützung für URL-Auflösung mit baseURI:
const $ = cheerio.load(html, {
baseURI: 'https://example.com/page/'
});
// Automatically resolves relative URLs
$('a').prop('href'); // Returns absolute URL
$('img').prop('src'); // Returns absolute URL
Hauptfunktionen nach Kategorie
DOM-Manipulation
- jQuery-ähnliche Elementauswahl mit CSS-Selektoren
- Umfassende Attribut- und Eigenschaftsmanipulation
- Vollständige Unterstützung für DOM-Traversierungsmethoden
- Element-Einfügung, -Entfernung und -Modifikation
Formular-Behandlung
// Serialize forms to URL-encoded strings
$('form').serialize(); // 'name=value&email=test@example.com'
// Get form data as structured arrays
$('form').serializeArray();
// [{ name: 'username', value: 'john' }, ...]
CSS und Styling
// Get/set CSS properties
$('.element').css('color', 'red');
$('.element').css(['margin', 'padding']); // Get multiple properties
// Class manipulation
$('.item').addClass('active selected');
$('.item').removeClass('old-class');
$('.item').toggleClass('visible');
Daten-Attribute
// HTML5 data-* attribute support with automatic type coercion
$('.widget').data('config'); // Parses JSON automatically
$('.widget').data('count', 42); // Set data programmatically
Migration von älteren Versionen
Von 0.x zu 1.x
- Breaking: Node.js 12+ erforderlich (Unterstützung für ältere Versionen eingestellt)
- Breaking: Einige interne APIs wurden geändert
- Verbessert: Bessere TypeScript-Unterstützung durchgängig
- Neu: Stream-basiertes Parsing für bessere Speicher-Effizienz
Wichtige Änderungen im Überblick
// Old way (0.x) - still works but discouraged
const cheerio = require('cheerio');
const $ = cheerio.load(html);
// New way (1.x) - recommended
import * as cheerio from 'cheerio';
const $ = cheerio.load(html);
Leistungsverbesserungen
Version 1.2.0 enthält erhebliche Leistungsverbesserungen:
- Schnelleres Parsing: Verbesserter HTML-Parser mit besserer Fehlerbehandlung
- Speicher-Effizienz: Reduzierter Speicher-Footprint für große Dokumente
- Streaming-Unterstützung: Verarbeitung großer Dokumente ohne vollständiges Laden in den Speicher
// Stream processing for large files
const stream = cheerio.decodeStream({
encoding: { defaultEncoding: 'utf8' }
}, (err, $) => {
// Process document as it streams
});
Erweiterte Funktionen
Benutzerdefinierte Parser-Optionen
const $ = cheerio.load(html, {
xmlMode: true, // Parse as XML
decodeEntities: false, // Don't decode HTML entities
scriptingEnabled: false // Disable script tag processing
});
Netzwerk-Laden mit Optionen
const $ = await cheerio.fromURL('https://api.example.com/data', {
requestOptions: {
headers: { 'User-Agent': 'MyBot/1.0' }
},
encoding: { defaultEncoding: 'utf8' }
});
Bewährte Praktiken
- TypeScript verwenden: Nutzen Sie die umfassenden Typdefinitionen
- Große Dokumente streamen: Verwenden Sie Streaming-APIs für bessere Speicherverwaltung
- Die Extract API nutzen: Verwenden Sie die neue Extract-Methode für strukturierte Datenextraktion
- baseURI setzen: Setzen Sie beim Scraping von Websites baseURI für korrekte URL-Auflösung
Unterschiede zwischen Browser und Server
Cheerio ist für den Server-seitigen Einsatz konzipiert und entfernt browser-spezifische jQuery-Funktionen, während es server-optimierte Funktionalität hinzufügt wie:
- Keine Browser-DOM-Inkonsistenzen
- Bessere Fehlerbehandlung für fehlerhaftes HTML
- Speicher-effizientes Parsing
- Stream-Verarbeitungsfähigkeiten
- Automatische Kodierungserkennung
Das macht Cheerio ideal für Web Scraping, server-seitiges Rendering und alle HTML/XML-Verarbeitungsaufgaben in Node.js-Umgebungen.