Parsing de HTML em Node.js: Principais bibliotecas e exemplos de código

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Parsing de HTML em JavaScript (Node.js): Guia Completo



Parsing de HTML é uma das tarefas principais no desenvolvimento de parsers (web scrapers) e automação de coleta de dados. No ecossistema Node.js, existem várias bibliotecas poderosas que permitem extrair informações de documentos HTML. Neste artigo, analisaremos três ferramentas principais: Cheerio, JSDOM e Puppeteer, compararemos suas capacidades e forneceremos exemplos práticos de código.



1. Cheerio — jQuery leve para servidor



Cheerio é a biblioteca mais popular para parsing de HTML em Node.js. Ela implementa a sintaxe do jQuery, mas funciona sem ambiente de navegador, tornando-a rápida e econômica em memória. Cheerio é ideal para páginas HTML estáticas, onde não é necessária a execução de JavaScript.



Instalação

npm install cheerio


Exemplo de uso

const cheerio = require('cheerio');const axios = require('axios');

async function parsePage(url) { const response = await axios.get(url); const $ = cheerio.load(response.data);

// Extrai o título da página const title = $('h1').text().trim();

// Coleta todos os links const links = []; $('a').each((i, el) => { const href = $(el).attr('href'); if (href) links.push(href); });

return { title, links };}

// UsoparsePage('https://example.com').then(data => console.log(data));


Quando escolher Cheerio:

  • Páginas estáticas sem conteúdo dinâmico
  • Altos requisitos de desempenho
  • Sintaxe simples do jQuery
  • Não há necessidade de renderização de JavaScript


2. JSDOM — implementação completa do DOM



JSDOM emula um ambiente de navegador, criando um modelo DOM completo. Ao contrário do Cheerio, o JSDOM suporta a execução de JavaScript, permitindo analisar páginas cujo conteúdo é gerado por scripts. No entanto, isso tem um custo em funcionalidade — a biblioteca consome mais recursos.



Instalação

npm install jsdom


Exemplo de uso

const { JSDOM } = require('jsdom');

async function parseDynamicPage(html) { const dom = new JSDOM(html, { runScripts: 'dangerously', resources: 'usable' });

const document = dom.window.document;

// Aguarda a execução dos scripts await new Promise(resolve => setTimeout(resolve, 2000));

const items = []; document.querySelectorAll('.product-item').forEach(el => { items.push({ name: el.querySelector('.product-name')?.textContent, price: el.querySelector('.price')?.textContent }); });

return items;}

// Exemplo com passagem de HTMLconst html = `<html><body><div class="product-item">...</div></body></html>`;parseDynamicPage(html).then(data => console.log(data));


Quando escolher JSDOM:

  • Páginas com conteúdo dinâmico (AJAX, React, Vue)
  • Necessidade de trabalhar com eventos DOM
  • Testes de aplicações web
  • Extração de dados de SPAs (Single Page Application)


3. Puppeteer — navegador controlado por código



Puppeteer é um navegador headless completo (Chrome/Chromium) com controle programático. Ele executa JavaScript, carrega recursos, gerencia cookies e sessões. Puppeteer é a ferramenta mais poderosa, mas também a mais pesada em termos de recursos.



Instalação

npm install puppeteer


Exemplo de uso

const puppeteer = require('puppeteer');

async function parseWithBrowser(url) { const browser = await puppeteer.launch({ headless: true }); const page = a

Recommendations