Cheerio vs Puppeteer: Guía para elegir la mejor herramienta de Web Scraping
Suciu Dan el 11 abr 2023

¿Está tratando de decidir qué herramienta utilizar para el web scraping? Puede ser difícil elegir entre las diferentes opciones que existen, pero no te preocupes, estoy aquí para ayudarte. En este artículo, analizaremos Cheerio y Puppeteer, dos herramientas populares para el web scraping.
Cheerio es una biblioteca para analizar y manipular documentos HTML, mientras que Puppeteer es una biblioteca para controlar un navegador Chrome sin cabeza. Cheerio permite seleccionar elementos utilizando una sintaxis similar a la de jQuery, mientras que Puppeteer puede utilizarse para tareas como el web scraping, las pruebas y la automatización del envío de formularios.
Así que, ¡manos a la obra!
¿Qué es Cheerio?
Cheerio es una biblioteca JavaScript que analiza y manipula documentos HTML y permite seleccionar, modificar y realizar acciones sobre elementos de un documento utilizando una sintaxis similar a jQuery.
Cheerio es liviano y fácil de usar, lo que lo convierte en una buena opción para tareas simples de web scraping. También es más rápido que usar un navegador completo como Chrome o Firefox, ya que no tiene que cargar todos los activos y recursos. Esto lo hace ideal para extraer datos de un documento HTML.
Cheerio tiene muchas características y beneficios que lo convierten en una opción popular para el web scraping. Algunas de las principales características y beneficios de Cheerio incluyen:
- Liviano y fácil de usar: Cheerio está diseñado para ser liviano y fácil de usar, lo que lo convierte en una gran opción para tareas simples de web scraping. Su sintaxis es similar a la de jQuery, familiar para muchos desarrolladores, y permite seleccionar y manipular elementos en un documento HTML con sólo unas pocas líneas de código.
- Rápido: Cheerio es más rápido que usar un navegador completo para hacer web scraping, ya que no tiene que cargar todos los recursos y recursos que cargaría un navegador. Esto lo convierte en una buena opción para tareas donde la velocidad es importante.
- Soporte para documentos HTML y XML: Cheerio puede analizar y manipular documentos HTML y XML, dándole la flexibilidad de trabajar con diferentes tipos de documentos según sea necesario.
- Puede usarse en combinación con otras herramientas: Cheerio puede usarse en combinación con otras herramientas como Fetch API o Axios para realizar tareas de web scraping. Esto le permite adaptar su flujo de trabajo a sus necesidades específicas y utilizar las mejores herramientas para el trabajo.
¿Qué es Puppeteer?
Puppeteer es una librería Node.js que proporciona una API de alto nivel para controlar un navegador Chrome sin cabeza. Permite automatizar tareas en Chrome sin abrir realmente una ventana de Chrome, lo que reduce el número de recursos que consumirá tu scraper.
Puede utilizar Puppeteer para realizar acciones como rellenar formularios, hacer clic en botones y extraer datos de sitios web.
Una de las principales ventajas de Puppeteer es que permite interactuar con los sitios web de forma similar a como lo haría un usuario humano. Esto lo convierte en una buena opción para tareas que requieren interacciones más complejas con un sitio web, como iniciar sesión, navegar por páginas y rellenar formularios.
Puppeteer tiene varias características y beneficios que lo convierten en una opción popular para el web scraping y la automatización. Algunas de las principales características y beneficios de Puppeteer incluyen:
- API de alto nivel: Puppeteer proporciona una API de alto nivel que es fácil de usar y entender. Esto hace que sea una buena opción para los desarrolladores que son nuevos en el web scraping o la automatización.
- Control sobre un navegador Chrome sin cabeza: Puppeteer le permite controlar un navegador Chrome sin cabeza, lo que significa que puede automatizar tareas en Chrome sin abrir realmente una ventana de Chrome. Esto lo convierte en una buena opción para tareas que requieren interacciones más complejas con un sitio web.
- Imita el comportamiento humano: Puppeteer puede imitar el comportamiento humano, como hacer clic en botones, desplazarse y rellenar formularios. Esto lo convierte en una buena opción para tareas que requieren interacciones más complejas con un sitio web.
- Soporte para funciones web modernas: Puppeteer tiene soporte completo para características web modernas como JavaScript, cookies y CAPTCHAs. Esto hace que sea una buena opción para las tareas que requieren estas características.
- Se puede utilizar en combinación con otras herramientas: Puppeteer se puede utilizar en combinación con otras herramientas como Cheerio para realizar tareas de web scraping. Esto le permite adaptar su flujo de trabajo a sus necesidades específicas y utilizar las mejores herramientas para el trabajo.
Diferencias entre Cheerio y Puppeteer
Cheerio y Puppeteer son herramientas populares para el web scraping, pero tienen algunas diferencias clave que las hacen más adecuadas para ciertas tareas. Estas son algunas de las principales diferencias entre Cheerio y Puppeteer:
- Rendimiento: Cheerio es generalmente más rápido que Puppeteer porque no tiene que cargar todos los activos y recursos que cargaría un navegador. Sin embargo, Puppeteer tiene la ventaja de poder interactuar con los sitios web de forma similar a como lo haría un usuario humano, lo que puede hacerlo más rápido para ciertas tareas.
- Funcionalidad: Cheerio es bueno para tareas simples de web scraping que implican la extracción de datos de documentos HTML o XML. Puppeteer es más potente y puede automatizar tareas en un navegador Chrome headless, como iniciar sesión, navegar por páginas y rellenar formularios.
- Facilidad de uso: Cheerio tiene una sintaxis similar a jQuery, que es familiar para muchos desarrolladores. Esto hace que sea fácil de usar para aquellos que ya están familiarizados con jQuery. Puppeteer también tiene una API de alto nivel que es fácil de usar, pero requiere más instalación y configuración que Cheerio.
En general, la elección entre Cheerio y Puppeteer dependerá de las necesidades específicas de su tarea de web scraping. Si sólo necesita extraer algunos datos de un documento HTML y el rendimiento es una preocupación, Cheerio podría ser la mejor opción. Si necesita automatizar, Puppeteer es la opción correcta.
Comprobación o instalación de Node.JS
Antes de empezar, asegúrate de que Node.JS está instalado en tu máquina. La versión de Node utilizada en este artículo es la 18.9.0. Ejecuta este comando para comprobar tu versión local:
nodo -v
Si recibes un error, descarga e instala Node.js desde el sitio web oficial. Esto también instalará `npm`, el gestor de paquetes para Node.js.
Puesta en marcha del proyecto
Abre el terminal y crea una nueva carpeta llamada `scraper`. Accede al directorio y ejecuta el comando npm init. Esto creará un archivo `package.json` para tu proyecto que contendrá metadatos como el nombre, la versión y las dependencias.
Siga las instrucciones para introducir información sobre su proyecto. Puede pulsar `Intro` para aceptar los valores por defecto para cada pregunta, o puede introducir los valores que desee.
Ahora puede empezar a instalar dependencias y crear archivos para su proyecto:
npm install cheerio puppeteer
Las dependencias se instalarán en el directorio `node_modules` del proyecto y también se añadirán a la sección de dependencias del archivo `package.json`.
Definir un objetivo
Para este artículo, vamos a raspar un artículo de ArsTechnica y extraer el título del artículo, la URL de la imagen de portada y el primer párrafo del cuerpo del artículo.
Curso intensivo básico de extracción de datos
Para empezar, vaya al sitio web de destino y abra un artículo. Haga clic con el botón derecho en el título del artículo y seleccione "Inspeccionar". Esto abrirá las herramientas de desarrollo y resaltará el elemento HTML de la etiqueta de encabezado.

Para las buenas prácticas de SEO, una página debe tener sólo un elemento H1. Por lo tanto, h1 puede utilizarse como un selector fiable para el título.
Para elegir el selector de la imagen de portada, utilice la herramienta Inspeccionar. La imagen está envuelta en una etiqueta `figure`, por lo que es una buena idea incluir el elemento padre en el selector. El selector final es `figure img`.
Por último, pero no menos importante, tenemos que encontrar el selector para el primer párrafo.

Como el primer párrafo no es el primer elemento hijo del elemento padre, se necesita un selector CSS adicional. El elemento padre tiene una clase llamada `article-content`. Podemos utilizar esta clase junto con el selector `:first-of-type` para crear nuestro selector final: `.article-content p:first-of-type`.
Aquí está la lista final con selectores:
- Título: `h1`
- Imagen de portada: `figure img`
- Primer párrafo: `.article-content p:first-of-type`
Construcción del rascador
Ahora que tenemos las dependencias en el proyecto, veremos cómo usar Cheerio y Puppeteer juntos para construir un raspador web. Combinando estas dos herramientas, puedes crear un scraper rápido y potente, ¡así que empecemos!
Crea un archivo llamado `scrape.js` y pega el siguiente código en él:
const puppeteer = require('puppeteer');
const cheerio = require('cheerio');
async function scrape() {
// Launch a headless Chrome browser
const browser = await puppeteer.launch();
// Create a new page
const page = await browser.newPage();
// Navigate to the website you want to scrape
await page.goto('https://arstechnica.com/tech-policy/2023/01/musk-led-twitter-faces-another-lawsuit-alleging-it-failed-to-pay-bills/');
// Wait for the page to load
await page.waitForSelector('h1');
// Extract the HTML of the page
const html = await page.evaluate(() => document.body.innerHTML);
// Use Cheerio to parse the HTML
const $ = cheerio.load(html);
// Extract the title, cover image, and paragraph using Cheerio's syntax
const title = $('h1').text();
const paragraph = $('.article-content p:first-of-type').text()
const coverImage = $('figure img').attr('src');
// Display the data we scraped
console.log({
title,
paragraph,
coverImage
});
// Close the browser
await browser.close();
}
scrape();
Puedes ejecutar el código con el comando node scrape.js. La salida debería mostrar el título del artículo y la URL de la imagen de portada, y debería tener este aspecto:
{
title: 'Lawsuit: Twitter failed to pay $136,000 in rent at San Francisco office tower',
paragraph: 'The Elon Musk-owned Twitter is facing another lawsuit alleging that it failed to pay its bills.',
coverImage: 'https://cdn.arstechnica.net/wp-content/uploads/2023/01/getty-musk-twitter-800x533.jpg'
}
Pasar al siguiente nivel
Ahora que has aprendido a raspar datos básicos de una sola página web usando Puppeteer y Cheerio, es hora de llevar tus habilidades de raspado web al siguiente nivel. Esto es lo que puedes hacer para convertir este raspador básico en uno de última generación:
- Scrapear una categoría entera: Modificando la URL y los selectores de tu código, puedes scrapear los artículos de una categoría. Esto es útil para extraer grandes cantidades de datos o para realizar un seguimiento de las actualizaciones de una categoría específica de contenido.
- Utilizar un agente de usuario diferente en cada solicitud: Al cambiar el agente de usuario de su scraper, puede eludir las restricciones e imitar mejor el comportamiento humano. Esto puede ser útil para raspar sitios web que bloquean o limitan las solicitudes en función del agente de usuario.
- Integrar una red proxy: Una red proxy puede ayudarte a rotar direcciones IP y evitar ser detectado. Esto es especialmente útil para el scraping de sitios web que bloquean las IP o limitan las solicitudes.
- Resolver captchas: Algunos sitios web utilizan captchas para evitar el scraping automatizado. Hay varias formas de evitar los captchas, como utilizar un servicio de resolución de captchas o implementar un modelo de aprendizaje automático para reconocer y resolver captchas.
Para terminar
A estas alturas, deberías tener una buena comprensión de las fortalezas y limitaciones de Cheerio y Puppeteer, y deberías ser capaz de tomar una decisión informada sobre cuál es la que mejor se adapta a tus necesidades. Hay una herramienta de web scraping para usted, ya sea un principiante o un desarrollador experimentado.
Si quieres profundizar en Cheerio, echa un vistazo a este artículo escrito por uno de mis colegas. Cubre temas como la identificación de nodos usando el Elemento de Inspección, guardando los resultados en el disco, y raspando un sitio grande como Reddit en más detalle.
Apenas hemos tocado las capacidades de Puppeteer. Si quieres saber más, este artículo profundiza en temas como la captura de pantalla, el envío de formularios y el scraping de múltiples páginas.
Esperamos que este artículo le haya ayudado a comprender las opciones disponibles y a tomar la mejor decisión para sus necesidades de raspado web.
Una alternativa aún más fácil
Aunque ya hemos hablado de los puntos fuertes y las limitaciones de Cheerio y Puppeteer, hay otra opción que puedes considerar: utilizar un scraper como servicio como WebScrapingAPI.
Utilizar un servicio de este tipo tiene varias ventajas:
- Puede confiar en que el rascador es fiable y está bien mantenido: el rascador cuenta con recursos dedicados para garantizar que está actualizado y funciona correctamente. Esto puede ahorrarle mucho tiempo y esfuerzo en comparación con la construcción y el mantenimiento de su propio rascador.
- Un servicio de raspador web puede ser a menudo más rentable que crear uno propio: no tendrá que invertir en el desarrollo y mantenimiento del raspador, y podrá aprovechar cualquier característica especial o soporte que ofrezca la empresa.
- Ser detectado ya no será un problema: un raspador web premium evita la detección y a menudo puede raspar sitios web de forma más eficaz y eficiente que un raspador creado por usted mismo. Esto le ahorra tiempo y le permite centrarse en analizar y utilizar los datos raspados.
Te animamos a que pruebes nuestro raspador web y compruebes por ti mismo las ventajas de utilizar una herramienta fiable y de confianza. Cree una cuenta gratuita ahora.
Noticias y actualidad
Manténgase al día de las últimas guías y noticias sobre raspado web suscribiéndose a nuestro boletín.
We care about the protection of your data. Read our <l>Privacy Policy</l>.Privacy Policy.

Artículos relacionados

Descubra cómo extraer y organizar datos de forma eficaz para el raspado web y el análisis de datos mediante el análisis sintáctico de datos, las bibliotecas de análisis sintáctico HTML y los metadatos de schema.org.


¿Son los selectores XPath mejores que los selectores CSS para el web scraping? Conozca los puntos fuertes y las limitaciones de cada método y tome la decisión correcta para su proyecto.


Descubra 3 maneras de descargar archivos con Puppeteer y construya un raspador web que haga exactamente eso.
