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

Instalação

Cheerio é uma implementação server-side do jQuery core projetada especificamente para ambientes Node.js. Este guia abrange todas as formas de instalar e configurar o Cheerio em seus projetos.

Instalação via Package Manager

npm

npm install cheerio

yarn

yarn add cheerio

pnpm

pnpm add cheerio

bun

bun add cheerio

Sintaxe de Importação

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

Importações Desestruturadas

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

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

Configuração TypeScript

O Cheerio já vem com definições TypeScript integradas. Não é necessário um package @types adicional.

Uso Básico com 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 Avançado de Tipos

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

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

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

Suporte a Ambientes

Requisitos do Node.js

Limitações do Browser

⚠️ Importante: O Cheerio não foi projetado para ambientes de browser. É uma biblioteca server-side que:

Para ambientes de browser, use jQuery ou APIs DOM modernas.

Métodos de Carregamento Avançados

Carregando a partir de 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);

Carregando a partir de 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 de 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);

Opções de Configuração

Opções do 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 Comuns de Instalação

Conflitos de Versão do Node.js

Erro: Cannot find module 'cheerio' ou avisos de compatibilidade

Solução: Certifique-se de estar usando Node.js 18.17 ou 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 Module ESM/CommonJS

Erro: require() of ES Module ou declarações import em CommonJS

Solução: Certifique-se de que seu package.json tenha o tipo de module correto:

{
  "type": "module"
}

Ou use a sintaxe de importação apropriada para seu ambiente.

Configuração TypeScript

Erro: Erros de compilação TypeScript com tipos do Cheerio

Solução: Atualize seu tsconfig.json:

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

Problemas de Memória com Documentos Grandes

Erro: JavaScript heap out of memory

Solução: Aumente o limite de memória do Node.js:

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

Ou processe documentos em pedaços menores usando métodos de streaming.

Problemas de Encoding

Erro: Codificação de caracteres incorreta no HTML parseado

Solução: Use loadBuffer() com opções de encoding explícitas:

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

Verificação

Verifique se sua instalação funciona corretamente:

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

Com estes passos de instalação, você está pronto para começar a fazer parsing e manipular HTML com a poderosa API similar ao jQuery do Cheerio em suas aplicações Node.js.