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

Scraping de web con Selenium y Python
Raspado de web con Selenium y Python | Resolver Captcha al realizar el raspado de web

En este artículo te familiarizarás con el web scraping usando Selenium y Python, y aprenderás a resolver el Captcha involucrado en el proceso para una extracción de datos eficiente.

web scraping
Logo of CapSolver

Rajinder Singh

04-Dec-2025

Raspado de web en Golang con Colly
Raspado de web en Golang con Colly

En este blog, exploramos el mundo del raspado de web usando Golang con la biblioteca Colly. El guía comienza ayudándote a configurar tu proyecto de Golang e instalar el paquete Colly. Luego recorremos la creación de un raspador básico para extraer enlaces de una página de Wikipedia, mostrando la facilidad de uso y las potentes características de Colly.

web scraping
Logo of CapSolver

Emma Foster

04-Dec-2025

¿Qué es el raspado de web?
¿Qué es el scraping web? | Casos de uso comunes y problemas

Conoce el web scraping: aprende sus beneficios, supera los desafíos con facilidad y potencia tu negocio con CapSolver.

web scraping
Logo of CapSolver

Adélia Cruz

03-Dec-2025

¿Qué es un titiritero?
¿Qué es Puppeteer y cómo usarlo en el scraping de web | Guía Completa 2026

Este guía completa se adentrará en qué es Puppeteer y cómo usarlo de manera efectiva en el raspado de web.

web scraping
Logo of CapSolver

Adélia Cruz

03-Dec-2025

Cómo hacer un escáner de web con un agente de IA (Tutorial amigable para principiantes)
Cómo hacer un scraper de web de IA (Tutorial para principiantes)

Aprende a crear un raspador de web con un agente de inteligencia artificial desde cero con este tutorial accesible para principiantes. Descubre los componentes principales, ejemplos de código y cómo evitar medidas anti-bot como los CAPTCHAs para una recopilación de datos confiable.

web scraping
Logo of CapSolver

Adélia Cruz

02-Dec-2025

Cómo combinar navegadores de IA con solucionadores de Captcha para una recopilación de datos estable
Cómo combinar navegadores de IA con resolvedores de Captcha para la recopilación de datos estable

Aprende cómo combinar navegadores de IA con solucionadores de CAPTCHA de alto rendimiento como CapSolver para lograr la recopilación de datos estable. Guía esencial para canales de datos robustos y de alto volumen.

web scraping
Logo of CapSolver

Adélia Cruz

25-Nov-2025