CAPSOLVER
Blog
Raspado de web con Cheerio y Node.js 2026

Extracción de datos con Cheerio y Node.js 2026

Logo of CapSolver

Lucas Mitchell

Automation Engineer

20-Nov-2025

El raspado web es una técnica poderosa para extraer datos de sitios web, ampliamente utilizada en análisis de datos, investigación de mercados y agregación de contenido. Para 2026, utilizar Cheerio y Node.js para el raspado web sigue siendo un enfoque popular y eficiente. Este artículo explorará el proceso de usar Cheerio y Node.js para el raspado web, proporcionando una guía completa y un ejemplo práctico.

Índice

  • ¿Qué es Cheerio?
  • Requisitos previos
  • Configuración del proyecto
  • API de selección de Cheerio
  • Escritura del script de raspado
  • Ejecución del script
  • Desafíos del raspado web con Cheerio
  • Manejo de CAPTCHAs en el raspado web
  • Manejo de páginas dinámicas
  • Conclusión

¿Qué es Cheerio?

Cheerio es una implementación rápida, flexible y ligera de jQuery diseñada específicamente para aplicaciones del lado del servidor. Permite a los desarrolladores analizar y manipular documentos HTML utilizando una sintaxis similar a jQuery en un entorno Node.js. A diferencia de las herramientas basadas en navegadores, Cheerio no realiza renderizado web real, sino que manipula directamente cadenas HTML, lo que lo hace excepcionalmente eficiente para muchas tareas de raspado. Por cierto, Puppeteer es una excelente alternativa para el raspado con Cheerio.

Requisitos previos

Antes de sumergirte en el código, asegúrate de tener instalado Node.js y npm (Node Package Manager) en tu sistema. Si aún no los has instalado, puedes descargarlos desde el sitio oficial de Node.js.

Configuración del proyecto

Paso 1: Crear un directorio de proyecto nuevo

Primero, crea un nuevo directorio para tu proyecto e inicialízalo como un proyecto Node.js:

bash Copy
mkdir web-scraping
cd web-scraping
npm init -y

La bandera -y responde "sí" a todas las preguntas, configurando un archivo package.json predeterminado.

Paso 2: Instalar dependencias

A continuación, instala las dependencias necesarias, incluyendo axios para realizar solicitudes HTTP y cheerio para analizar HTML:

bash Copy
npm install axios cheerio

¿Luchando con el fracaso repetido para resolver el molesto CAPTCHA?

Descubra la resolución automática de CAPTCHAs con la tecnología de desbloqueo web automático de inteligencia artificial de Capsolver!

Obtené tu código de bonificación para soluciones de CAPTCHA top; CapSolver. |: WEBS. Después de canjearlo, obtendrás un 5% adicional de bonificación tras cada recarga, ilimitado

API de selección de Cheerio

Cheerio es una implementación rápida, flexible y ligera de jQuery principal diseñada específicamente para el servidor. Permite utilizar una sintaxis similar a jQuery para manipular documentos HTML en un entorno Node.js.

Aquí está una explicación detallada de la API de selección de Cheerio con ejemplos de código:

  1. Cargar un documento HTML:

    javascript Copy
    const cheerio = require('cheerio');
    const html = `
      <html>
        <head>
          <title>Ejemplo</title>
        </head>
        <body>
          <h1 class="title">¡Hola, mundo!</h1>
          <div id="content">
            <p>Este es un párrafo.</p>
            <a href="https://example.com">Enlace</a>
          </div>
        </body>
      </html>
    `;
    const $ = cheerio.load(html);
  2. Seleccionar elementos:

    • Selector de elemento:

      javascript Copy
      const h1 = $('h1'); // Seleccionar todos los elementos <h1>
      console.log(h1.text()); // Salida: ¡Hola, mundo!
    • Selector de clase:

      javascript Copy
      const title = $('.title'); // Seleccionar elementos con class="title"
      console.log(title.text()); // Salida: ¡Hola, mundo!
    • Selector de ID:

      javascript Copy
      const content = $('#content'); // Seleccionar elemento con id="content"
      console.log(content.html()); // Salida: <p>Este es un párrafo.</p><a href="https://example.com">Enlace</a>
    • Selector de atributo:

      javascript Copy
      const link = $('a[href="https://example.com"]'); // Seleccionar elemento <a> con atributo href específico
      console.log(link.text()); // Salida: Enlace
  3. Recorrer y manipular elementos:

    • Recorrer elementos:

      javascript Copy
      $('p').each((index, element) => {
        console.log($(element).text()); // Salida del contenido de texto de cada elemento <p>
      });
    • Modificar contenido de elementos:

      javascript Copy
      $('h1.title').text('Nuevo título'); // Modificar el contenido de texto del elemento <h1>
      console.log($('h1.title').text()); // Salida: Nuevo título
    • Añadir y eliminar elementos:

      javascript Copy
      $('#content').append('<p>Otro párrafo.</p>'); // Añadir un nuevo elemento <p> dentro de #content
      console.log($('#content').html()); // Salida: <p>Este es un párrafo.</p><a href="https://example.com">Enlace</a><p>Otro párrafo.</p>
      
      $('a').remove(); // Eliminar todos los elementos <a>
      console.log($('#content').html()); // Salida: <p>Este es un párrafo.</p><p>Otro párrafo.</p>

Estos ejemplos ilustran cómo puedes usar la API de selección de Cheerio para seleccionar, recorrer y manipular elementos HTML de una manera similar a jQuery, pero dentro de un entorno Node.js.

Escritura del script de raspado

Crea un archivo llamado scraper.js en tu directorio de proyecto. Este archivo contendrá la secuencia de comandos para extraer datos de un sitio web objetivo. Agrega el siguiente código a scraper.js:

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

// URL objetivo
const url = 'https://example.com';

async function fetchData() {
  try {
    // Realizar una solicitud HTTP para obtener el contenido HTML
    const { data } = await axios.get(url);
    // Cargar el documento HTML en Cheerio
    const $ = cheerio.load(data);

    // Extraer datos del HTML
    const title = $('title').text();
    const headings = [];
    $('h1, h2, h3').each((index, element) => {
      headings.push($(element).text());
    });

    // Mostrar los datos extraídos
    console.log('Título:', title);
    console.log('Títulos:', headings);
  } catch (error) {
    console.error('Error al obtener datos:', error);
  }
}

fetchData();

Explicación del código

  1. Importar módulos: El script comienza importando los módulos axios y cheerio.
  2. Definir la URL objetivo: Se define la URL del sitio web que se va a raspar.
  3. Obtener datos: La función fetchData realiza una solicitud HTTP GET al sitio web objetivo usando axios. Los datos de respuesta (contenido HTML) se cargan en Cheerio.
  4. Analizar HTML: Usando la sintaxis similar a jQuery de Cheerio, el script extrae el contenido de la etiqueta <title> y todas las etiquetas <h1>, <h2> y <h3>.
  5. Mostrar resultados: Los datos extraídos se registran en la consola.

Ejecución del script

Para ejecutar el script de raspado, ejecuta el siguiente comando en tu terminal:

bash Copy
node scraper.js

Si todo está configurado correctamente, deberías ver el título de la página web raspada y el contenido de todas las etiquetas de encabezado impresos en la consola.

Desafíos del raspado web con Cheerio

Aunque Cheerio ofrece varios beneficios para el raspado web, también conlleva sus propios desafíos que los desarrolladores pueden encontrar:

  1. Sitios web dinámicos y JavaScript: Uno de los principales desafíos con Cheerio es manejar sitios web dinámicos que dependen fuertemente de JavaScript. Los sitios web modernos a menudo usan JavaScript para cargar contenido dinámicamente después de la carga inicial de la página. Como Cheerio analiza HTML estático, podría no capturar contenido generado dinámicamente, lo que limita la efectividad del raspado.

  2. Medidas anti-escaneo: Los sitios web implementan varias técnicas anti-escaneo para disuadir la extracción automatizada de datos:

    • CAPTCHAs: Problema importante que podrías encontrar en el raspado diseñado para distinguir entre humanos y bots, los CAPTCHAs requieren que los usuarios completen tareas como reconocimiento de imágenes o entrada de texto.
    • Bloqueo de IP: Los sitios web podrían bloquear direcciones IP asociadas con actividades de raspado para evitar solicitudes excesivas.
    • Detección de User-Agent: Detectar agentes de usuario no estándar o sospechosos ayuda a los sitios web a identificar y bloquear a los raspadores.
    • Páginas web dinámicas: Los sitios web que usan generación de contenido dinámico con JavaScript pueden presentar desafíos ya que el contenido puede no estar directamente accesible a través de la analítica estática de Cheerio.

Como desarrollador de raspado web, entender estos desafíos es crucial para abordarlos de manera efectiva. Existen muchas estrategias para mitigar soluciones a estos problemas, y en las próximas páginas explicaremos cómo resolver dos de los mayores problemas en el raspado con la solución de CAPTCHA y cómo manejar páginas dinámicas:

Manejo de CAPTCHAs en el raspado web

Los CAPTCHAs representan un desafío significativo en el raspado web, ya que están diseñados para distinguir entre humanos y bots. Al encontrarse con uno, tu script de raspado debe resolverlo para continuar de manera eficiente. Para esfuerzos de raspado a escala, soluciones como CapSolver ofrecen alta precisión y capacidad de resolución rápida de CAPTCHAs.

Integración de solucionadores de CAPTCHA

Varias servicios de resolución de CAPTCHA pueden integrarse en tus scripts de raspado. Aquí nos enfocamos en CapSolver:

Paso 1: Registrarse en CapSolver

Para comenzar, navega al panel de usuario de CapSolver y regístrate en tu cuenta.

Paso 2: Obtener tu clave de API

Después de registrarte, obtén tu clave de API desde la página de inicio del panel.

Código de muestra para integración de CapSolver

Integrar CapSolver en tu proyecto de raspado web o automatización es sencillo. A continuación, se muestra un ejemplo en Python que demuestra cómo usar la API de CapSolver:

python Copy
# pip install requests
import requests
import time

# TODO: establece tu configuración
api_key = "TU_CLAVE_DE_API"  # tu clave de API de CapSolver
site_key = "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-"  # clave de sitio reCAPTCHA del sitio objetivo
site_url = ""  # URL de tu sitio objetivo


def resolver_captcha():
    payload = {
        "clientKey": api_key,
        "task": {
            "type": 'ReCaptchaV2TaskProxyLess',
            "websiteKey": site_key,
            "websiteURL": site_url
        }
    }
    res = requests.post("https://api.capsolver.com/createTask", json=payload)
    resp = res.json()
    task_id = resp.get("taskId")
    if not task_id:
        print("No se pudo crear la tarea:", res.text)
        return
    print(f"Obtenido taskId: {task_id} / Recuperando resultado...")

    while True:
        time.sleep(3)  # demora
        payload = {"clientKey": api_key, "taskId": task_id}
        res = requests.post("https://api.capsolver.com/getTaskResult", json=payload)
        resp = res.json()
        status = resp.get("status")
        if status == "ready":
            return resp.get("solution", {}).get('gRecaptchaResponse')
        if status == "failed" or resp.get("errorId"):
            print("Solución fallida! Respuesta:", res.text)
            return


captcha_token = resolver_captcha()
print(captcha_token)

Este script ilustra cómo utilizar la API de CapSolver para resolver desafíos de reCAPTCHA. Integrar dicha solución en tus proyectos de raspado mejora la eficiencia al automatizar la resolución de CAPTCHAs, lo que simplifica los procesos de extracción de datos.

Manejo de páginas dinámicas

Para páginas web que cargan contenido dinámicamente a través de JavaScript, podrías necesitar usar un navegador sin cabeza como puppeteer. Puppeteer puede simular una navegación real por la web, permitiéndote raspar contenido que aparece solo después de la ejecución de JavaScript.

Ejemplo con Puppeteer

Aquí tienes un breve ejemplo de cómo usar Puppeteer junto con Cheerio:

javascript Copy
const puppeteer = require('puppeteer');
const cheerio = require('cheerio');

async function fetchData() {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  await page.goto('https://example.com');

  const content = await page.content();
  const $ = cheerio.load(content);

  const title = $('title').text();
  const headings = [];
  $('h1, h2, h3').each((index, element) => {
    headings.push($(element).text());
  });

  console.log('Título:', title);
  console.log('Títulos:', headings);

  await browser.close();
}

fetchData();

Este script lanza un navegador sin cabeza, navega hasta la URL objetivo y obtiene el contenido HTML después de la ejecución de JavaScript. Luego utiliza Cheerio para analizar el HTML y extraer los datos deseados.

Conclusión

El raspado web con Cheerio y Node.js es una combinación poderosa para extraer datos de sitios web de manera eficiente. La sintaxis similar a jQuery de Cheerio hace que sea fácil navegar y manipular documentos HTML, mientras que Node.js proporciona un entorno robusto para manejar solicitudes HTTP y procesar datos.

Sin embargo, los desarrolladores deben ser conscientes de los desafíos planteados por contenido dinámico y medidas anti-escaneo como CAPTCHAs. Integrar soluciones como CapSolver puede ayudar a superar estos obstáculos, asegurando que tus scripts de raspado sean efectivos y confiables.

Espero que este artículo te ayude a comenzar con el raspado web en 2026 y te proporcione datos útiles para tus proyectos!

Aviso de Cumplimiento: La información proporcionada en este blog es solo para fines informativos. CapSolver se compromete a cumplir con todas las leyes y regulaciones aplicables. El uso de la red de CapSolver para actividades ilegales, fraudulentas o abusivas está estrictamente prohibido y será investigado. Nuestras soluciones para la resolución de captcha mejoran la experiencia del usuario mientras garantizan un 100% de cumplimiento al ayudar a resolver las dificultades de captcha durante el rastreo de datos públicos. Fomentamos el uso responsable de nuestros servicios. Para obtener más información, visite nuestros Términos de Servicio y Política de Privacidad.

Máse

Top 10 de Escrapers sin Código para Usar en 2026
Top 10 Scrapers sin código para usar en 2026

Una lista curada de las mejores herramientas de scraping web sin código para usar en 2026. Comparar scrapers con inteligencia artificial, plataformas visuales de punto y clic, precios, ventajas y desventajas, y casos de uso del mundo real.

web scraping
Logo of CapSolver

Adélia Cruz

27-Jan-2026

Baneos de IP en 2026: Cómo funcionan y Formas prácticas de evadirlos
Bloqueos de IP en 2026: Cómo funcionan y Formas prácticas de evadirlos

Aprende cómo evitar el bloqueo de IP en 2026 con nuestro guía completa. Descubre técnicas modernas de bloqueo de IP y soluciones prácticas como proxies residenciales y resolutores de CAPTCHA.

web scraping
Logo of CapSolver

Rajinder Singh

26-Jan-2026

Maxun con integración de CapSolver
Cómo resolver Captcha en Maxun con integración de CapSolver

Una guía práctica para integrar CapSolver con Maxun para el scraping de web en el mundo real. Aprende cómo manejar reCAPTCHA, Cloudflare Turnstile y sitios protegidos por CAPTCHA utilizando flujos de trabajo de pre-autenticación y robot.

web scraping
Logo of CapSolver

Adélia Cruz

21-Jan-2026

Browser4 con integración de CapSolver
Cómo resolver Captcha en Browser4 con integración de CapSolver

Automatización de Browser4 con alta capacidad de procesamiento combinada con CapSolver para el manejo de desafíos CAPTCHA en la extracción de datos web a gran escala.

web scraping
Logo of CapSolver

Aloísio Vítor

21-Jan-2026

¿Qué es un bot de scraping y cómo construir uno
¿Qué es un bot de scraping y cómo construir uno

Aprende qué es un bot de raspado y cómo construir uno para la extracción automatizada de datos. Descubre las mejores herramientas, técnicas de navegación segura y prácticas éticas de raspado.

web scraping
Logo of CapSolver

Emma Foster

15-Jan-2026

Scrapy vs. Selenium
Scrapy vs. Selenium: ¿Cuál es el mejor para tu proyecto de raspado web?

Descubre las fortalezas y diferencias entre Scrapy y Selenium para el web scraping. Aprende qué herramienta se adapta mejor a tu proyecto y cómo manejar desafíos como los CAPTCHAs.

web scraping
Logo of CapSolver

Ethan Collins

14-Jan-2026