DE EN ES FR ID JA KO PT RU TH VI ZH

Installation

Cheerio ist eine server-seitige Implementierung des jQuery-Kerns, die speziell für Node.js-Umgebungen entwickelt wurde. Diese Anleitung behandelt alle Möglichkeiten, Cheerio in Ihren Projekten zu installieren und einzurichten.

package Manager Installation

npm

npm install cheerio

yarn

yarn add cheerio

pnpm

pnpm add cheerio

bun

bun add cheerio

Import-Syntax

ESM (ES modules) - Empfohlen

import * as cheerio from 'cheerio';

// Load HTML and create a Cheerio instance
const $ = cheerio.load('<h2 class="title">Hello world</h2>');

// Manipulate elements
$('h2.title').text('Hello there!');
$('h2').addClass('welcome');

console.log($.html());
// => <html><head></head><body><h2 class="title welcome">Hello there!</h2></body></html>

CommonJS

const cheerio = require('cheerio');

const $ = cheerio.load('<h2 class="title">Hello world</h2>');
$('h2.title').text('Hello there!');

Destrukturierte Imports

// Import specific functions
import { load, contains, merge } from 'cheerio';

const $ = load('<ul><li>Apple</li><li>Orange</li></ul>');

TypeScript-Einrichtung

Cheerio wird mit integrierten TypeScript-Definitionen geliefert. Es ist kein zusätzliches @types package erforderlich.

Grundlegende TypeScript-Verwendung

import * as cheerio from 'cheerio';
import type { CheerioAPI, Element } from 'cheerio';

const html = '<div class="container"><p>Hello</p></div>';
const $: CheerioAPI = cheerio.load(html);

// Type-safe element selection
const elements: cheerio.Cheerio<Element> = $('.container p');
const text: string | undefined = elements.text();

Erweiterte Type-Verwendung

import type { AnyNode, CheerioOptions } from 'cheerio';

const options: CheerioOptions = {
  xmlMode: true,
  decodeEntities: false
};

const $ = cheerio.load('<xml><item>data</item></xml>', options);

Umgebungsunterstützung

Node.js-Anforderungen

Browser-Einschränkungen

⚠️ Wichtig: Cheerio ist nicht für Browser-Umgebungen konzipiert. Es ist eine server-seitige Bibliothek, die:

Für Browser-Umgebungen verwenden Sie stattdessen jQuery oder moderne DOM APIs.

Erweiterte Lademethoden

Laden aus Buffern

import * as cheerio from 'cheerio';
import * as fs from 'fs';

// Load from buffer with encoding detection
const buffer = fs.readFileSync('index.html');
const $ = cheerio.loadBuffer(buffer);

Laden von URLs

import * as cheerio from 'cheerio';

// Fetch and parse HTML from a URL
const $ = await cheerio.fromURL('https://example.com');
console.log($('title').text());

Streaming HTML

import * as cheerio from 'cheerio';
import * as fs from 'fs';

// Parse HTML streams
const writeStream = cheerio.stringStream({}, (err, $) => {
  if (err) {
    console.error('Parse error:', err);
    return;
  }
  
  console.log($('h1').text());
});

fs.createReadStream('document.html', { encoding: 'utf8' })
  .pipe(writeStream);

Konfigurationsoptionen

Parser-Optionen

import * as cheerio from 'cheerio';

const $ = cheerio.load(html, {
  // Use XML mode for XML documents
  xmlMode: false,
  
  // Decode HTML entities
  decodeEntities: true,
  
  // Set base URI for resolving relative URLs
  baseURI: 'https://example.com',
  
  // Enable/disable scripting
  scriptingEnabled: false
});

Häufige Installationsprobleme

Node.js-Versionskonflikte

Fehler: Cannot find module 'cheerio' oder Kompatibilitätswarnungen

Lösung: Stellen Sie sicher, dass Sie Node.js 18.17 oder höher verwenden:

node --version
# Should show v18.17.0 or higher

# Update Node.js if needed
npm install -g n  # For Unix systems
n latest

ESM/CommonJS module-Probleme

Fehler: require() of ES Module oder import-Anweisungen in CommonJS

Lösung: Stellen Sie sicher, dass Ihre package.json den korrekten module-Typ hat:

{
  "type": "module"
}

Oder verwenden Sie die entsprechende Import-Syntax für Ihre Umgebung.

TypeScript-Konfiguration

Fehler: TypeScript-Kompilierungsfehler mit Cheerio-Types

Lösung: Aktualisieren Sie Ihre tsconfig.json:

{
  "compilerOptions": {
    "moduleResolution": "node",
    "esModuleInterop": true,
    "allowSyntheticDefaultImports": true,
    "strict": true
  }
}

Speicherprobleme mit großen Dokumenten

Fehler: JavaScript heap out of memory

Lösung: Erhöhen Sie das Node.js-Speicherlimit:

node --max-old-space-size=4096 your-script.js

Oder verarbeiten Sie Dokumente in kleineren Blöcken mit Streaming-Methoden.

Kodierungsprobleme

Fehler: Falsche Zeichenkodierung im geparsten HTML

Lösung: Verwenden Sie loadBuffer() mit expliziten Kodierungsoptionen:

const $ = cheerio.loadBuffer(buffer, {
  encoding: {
    defaultEncoding: 'utf8'
  }
});

Überprüfung

Überprüfen Sie, ob Ihre Installation korrekt funktioniert:

import * as cheerio from 'cheerio';

const $ = cheerio.load('<h1>Test</h1>');
console.log($('h1').text()); // Should output: "Test"

// Check version
console.log('Cheerio version:', cheerio.version || 'Version info not available');

Mit diesen Installationsschritten sind Sie bereit, HTML mit Cheerios mächtiger, jQuery-ähnlicher API in Ihren Node.js-Anwendungen zu parsen und zu manipulieren.