Volver a Blog tutorial

Cómo hacer scraping web de cualquier página con Node.js y Playwright

3 min read vistas 1 leyendo ahora
Índice del artículo

Cómo hacer scraping web de cualquier página con Node.js y Playwright

El scraping web es una técnica muy útil para obtener información de páginas web de manera automatizada. En este tutorial, te mostraré cómo hacer scraping de cualquier página web usando Node.js y Playwright, y guardar los datos en un archivo JSON para su posterior procesamiento.

¿Por qué usar Playwright?

Playwright es una herramienta potente y moderna para controlar navegadores como Chrome, Firefox, y Safari, entre otros. A diferencia de otras herramientas de scraping, Playwright permite interactuar con páginas web que dependen mucho de JavaScript, lo que la hace perfecta para sitios dinámicos.

Requisitos previos

Para este tutorial, necesitarás lo siguiente:

  • Node.js y npm instalados en tu sistema.
  • Instalar Playwright.

1. Configurar el entorno

Primero, necesitamos crear un proyecto en Node.js e instalar las dependencias necesarias:

mkdir scraping-web
cd scraping-web
npm init -y
npx playwright install
npm install @playwright/test fs

Esto inicializará un proyecto de Node.js y añadirá las dependencias de Playwright y el módulo fs para trabajar con archivos.

2. Escribir el script de scraping

El siguiente paso es escribir un script que realice el scraping de cualquier página web. Aquí tienes un ejemplo básico:

import { chromium } from '@playwright/test';
import fs from 'fs';

(async () => {
  const url = 'https://ejemplo.com';  // Reemplaza con la URL que desees scrapear

  // Iniciar navegador y página
  const browser = await chromium.launch({ headless: true });
  const page = await browser.newPage();

  // Navegar a la página
  await page.goto(url);

  // Esperar a que los elementos de interés se carguen (modifica el selector)
  await page.waitForSelector('selector-del-elemento');

  // Extraer los datos
  const data = await page.$$eval('selector-del-elemento', items =>
    items.map(item => {
      const title = item.querySelector('selector-titulo')?.innerText || 'Sin título';
      const price = item.querySelector('selector-precio')?.innerText || 'Sin precio';
      return { title, price };
    })
  );

  // Guardar los datos en un archivo JSON
  fs.writeFileSync('data.json', JSON.stringify(data, null, 2), 'utf-8');
  console.log('Datos guardados en data.json');

  // Cerrar el navegador
  await browser.close();
})();

3. Personalizar los selectores

El script es genérico, lo que significa que puedes adaptarlo para cualquier página simplemente cambiando los selectores de los elementos que quieras scrapear. Por ejemplo, si estás scrapeando productos de una tienda online, es probable que los selectores de los títulos y precios sean algo como:

const data = await page.$$eval('.product-card', items => 
  items.map(item => {
    const title = item.querySelector('.product-title')?.innerText || 'Sin título';
    const price = item.querySelector('.product-price')?.innerText || 'Sin precio';
    return { title, price };
  })
);

Modifica los selectores según la estructura HTML de la página objetivo.

4. Guardar los datos en un archivo JSON

El resultado de la extracción se guarda en un archivo JSON llamado data.json. Este archivo puede ser útil si quieres procesar los datos posteriormente o simplemente mantener un registro de la información scrapeada.

5. Ejecutar el script

Para ejecutar el script, simplemente corre el siguiente comando en la terminal:

node index.mjs

Esto ejecutará el script de scraping y guardará los datos en el archivo data.json.

6. Cuidado con los términos de uso

Es importante tener en cuenta que algunas páginas web prohíben el scraping en sus términos de uso. Asegúrate de revisar las políticas de cada sitio web antes de realizar scraping masivo.

Con este tutorial, has aprendido cómo hacer scraping de cualquier página web utilizando Node.js y Playwright, y cómo guardar los datos en un archivo JSON. Esto te permitirá obtener y analizar información de manera automatizada, abriendo las puertas a una gran cantidad de aplicaciones.

Últimos artículos

... tip: teclea algo secreto (una pista... CAMILO)