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

Installation

Cheerio est une implémentation côté serveur du cœur de jQuery conçue spécifiquement pour les environnements Node.js. Ce guide couvre toutes les façons d'installer et de configurer Cheerio dans vos projets.

Installation via gestionnaire de package

npm

npm install cheerio

yarn

yarn add cheerio

pnpm

pnpm add cheerio

bun

bun add cheerio

Syntaxe d'importation

ESM (ES Modules) - Recommandé

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!');

Importations déstructurées

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

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

Configuration TypeScript

Cheerio est livré avec des définitions TypeScript intégrées. Aucun package @types supplémentaire n'est requis.

Utilisation TypeScript de base

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();

Utilisation avancée des types

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

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

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

Compatibilité des environnements

Exigences Node.js

Limitations dans le navigateur

⚠️ Important : Cheerio n'est pas conçu pour les environnements de navigateur. C'est une bibliothèque côté serveur qui :

Pour les environnements de navigateur, utilisez plutôt jQuery ou les API DOM modernes.

Méthodes de chargement avancées

Chargement depuis des buffers

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);

Chargement depuis des URL

import * as cheerio from 'cheerio';

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

HTML en streaming

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);

Options de configuration

Options de l'analyseur

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
});

Problèmes d'installation courants

Conflits de version Node.js

Erreur : Cannot find module 'cheerio' ou avertissements de compatibilité

Solution : Assurez-vous d'utiliser Node.js 18.17 ou supérieur :

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

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

Problèmes de module ESM/CommonJS

Erreur : require() of ES Module ou instructions import dans CommonJS

Solution : Assurez-vous que votre package.json a le bon type de module :

{
  "type": "module"
}

Ou utilisez la syntaxe d'importation appropriée pour votre environnement.

Configuration TypeScript

Erreur : Erreurs de compilation TypeScript avec les types Cheerio

Solution : Mettez à jour votre tsconfig.json :

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

Problèmes de mémoire avec des documents volumineux

Erreur : JavaScript heap out of memory

Solution : Augmentez la limite de mémoire de Node.js :

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

Ou traitez les documents en plus petits morceaux en utilisant les méthodes de streaming.

Problèmes d'encodage

Erreur : Encodage de caractères incorrect dans le HTML analysé

Solution : Utilisez loadBuffer() avec des options d'encodage explicites :

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

Vérification

Vérifiez que votre installation fonctionne correctement :

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');

Avec ces étapes d'installation, vous êtes prêt à commencer à analyser et manipuler du HTML avec l'API puissante de Cheerio, similaire à jQuery, dans vos applications Node.js.