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

Instalación

Cheerio es una implementación del lado del servidor del núcleo de jQuery diseñada específicamente para entornos Node.js. Esta guía cubre todas las formas de instalar y configurar Cheerio en tus proyectos.

Instalación con Gestor de Paquetes

npm

npm install cheerio

yarn

yarn add cheerio

pnpm

pnpm add cheerio

bun

bun add cheerio

Sintaxis de Importación

ESM (ES Modules) - Recomendado

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

Importaciones Desestructuradas

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

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

Configuración de TypeScript

Cheerio incluye definiciones de TypeScript integradas. No se requiere ningún package @types adicional.

Uso Básico con TypeScript

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

Uso Avanzado de Tipos

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

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

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

Compatibilidad de Entornos

Requisitos de Node.js

Limitaciones del Navegador

⚠️ Importante: Cheerio no está diseñado para entornos de navegador. Es una librería del lado del servidor que:

Para entornos de navegador, usa jQuery o las APIs modernas del DOM en su lugar.

Métodos de Carga Avanzados

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

Carga desde URLs

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

Opciones de Configuración

Opciones del Parser

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

Problemas Comunes de Instalación

Conflictos de Versión de Node.js

Error: Cannot find module 'cheerio' o advertencias de compatibilidad

Solución: Asegúrate de usar Node.js 18.17 o superior:

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

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

Problemas de Módulos ESM/CommonJS

Error: require() of ES Module o declaraciones import en CommonJS

Solución: Asegúrate de que tu package.json tenga el tipo de module correcto:

{
  "type": "module"
}

O usa la sintaxis de importación apropiada para tu entorno.

Configuración de TypeScript

Error: Errores de compilación de TypeScript con tipos de Cheerio

Solución: Actualiza tu tsconfig.json:

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

Problemas de Memoria con Documentos Grandes

Error: JavaScript heap out of memory

Solución: Aumenta el límite de memoria de Node.js:

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

O procesa documentos en fragmentos más pequeños usando métodos de streaming.

Problemas de Codificación

Error: Codificación de caracteres incorrecta en HTML parseado

Solución: Usa loadBuffer() con opciones de codificación explícitas:

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

Verificación

Verifica que tu instalación funcione correctamente:

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

Con estos pasos de instalación, estás listo para comenzar a parsear y manipular HTML con la potente API similar a jQuery de Cheerio en tus aplicaciones Node.js.