Script Básico en Node.js para Web Scraping

Spread the love

¿Te has planteado alguna vez cómo extraer datos de una web pero no sabías por dónde empezar? Este script de web scraping en Node.js es una solución sencilla y accesible para dar tus primeros pasos.

En un mundo donde la información es clave, herramientas como esta te permiten alimentar tu propio sistema RAG (Retrieval-Augmented Generation) con datos propios o ajustados a tus necesidades, especialmente cuando esa información no está disponible en otros formatos

¿Cómo funciona este script?

El corazón del script son dos herramientas clave: Axios, que nos ayuda a hacer solicitudes HTTP, y Cheerio, una librería que permite manejar el HTML como si tuvieras las capacidades de jQuery en Nodejs. En palabras simples, el script hace esto:

  1. Busca enlaces en la web:
    • Cuando le das una URL, el script localiza todos los enlaces disponibles en esa página.
    • Los convierte en URLs completas (absolutas), listas para ser exploradas.
  2. Extrae texto limpio de las páginas:
    • Una vez tiene los enlaces, se encarga de visitar cada uno y recolectar datos importantes como el título, la meta descripción y el texto principal.
    • Si necesitas centrarte en ciertos elementos o eliminar partes irrelevantes, puedes usar selectores CSS para incluir o excluir secciones específicas.
  3. Guarda los datos:
    • Toda la información extraída se almacena en archivos JSON dentro de una carpeta llamada scraped_pages. El nombre del archivo está basado en el título de la página, lo que facilita encontrar lo que buscas.

¿Cómo puedes usarlo?

Preparativos:

Descarga el script desde mi repositorio https://github.com/elbrinner/webscraper 

Antes de ejecutarlo, instala las dependencias con:

npm install axios cheerio

Lanzar el script en tu terminal en la ruta raíz

node scraper.js <https://www.miurl.com> <selectores_incluir> <selectores_excluir>

Ejemplo de ejecución con este blog

node scraper.js https://elbrinner.com h3,p nav,footer,.site-branding

Explicación de los parámetros:

  1. https://elbrinner.com: Es la URL principal del dominio que deseas analizar.
  2. h3,p: Los elementos a incluir (en este caso, texto de encabezados <h3> y párrafos <p>).
  3. nav,footer,.site-branding: Los elementos a excluir. Esto incluye:
    • La etiqueta <nav> (barra de navegación).
    • La etiqueta <footer> (pie de página).
    • Cualquier elemento que tenga la clase .site-branding.

Resultado final

Después de procesar la página, el script guardará un archivo JSON por enlace dentro del dominio principal con los datos obtenidos en la carpeta scraped_pages. Ese archivo incluirá:

  • Título de la página.
  • Descripción (meta description, si existe).
  • Contenido textual limpio basado en los selectores que hayas indicado.

Ejemplo:

{
  "fecha": "2025-04-03T00:24:25.223Z",
  "url": "https://elbrinner.com/index.php/tag/net/",
  "titulo": ".Net – Elbrinner Fernandes",
  "descripcion": "",
  "contenido": "Estaba desarrollando una aplicación con Composer Frameworks que manejaba una gran cantidad de tokens, y noté que la respuesta del asistente era considerablemente lenta. Al analizar el código de Composer, una de las ventajas de ser de código abierto, identifiqué el cuello de botella. La idea era seguir aprovechando el modo low-code, pero implementando una … Leer másEn este artículo hablaremos de OutSystems, una plataforma low-code que permite crear desarrollos complejos de forma ágil en menor tiempo comparado con los desarrollos tradicionales. Una de las ventajas de OutSystems en comparación a otras plataformas low-code, es la flexibilidad al desarrollar, permite crear extensiones de .Net por ejemplo. Esto abre un abanico de posibilidades a la … Leer másSeguimos con nuestras sesiones enseñando lo que conocemos de MAUI. En esta ocasión, vamos a impartir un taller en el que crearemos una aplicación MAUI sencilla, para enseñar buenas prácticas a la hora de trabajar con el framework. Creación de Views y ViewModels Uso de servicios Localización de recursos Navegación Dependency injection … El taller será impartido por Elbrinner y Jorge, organizadores de grupo MobileDevelopment , pero como en todas las ocaciones, cualquiera puede participar abriendo el micro y trasladándonos sus opiniones. Twitter Elbrinner: @elbrinner Twitter Jorge: @jorgedcrespoDesarrollo de aplicaciones hibridas con MAUI/Blazor, analizaremos las ventajas e inconvenientes de dicha tecnología, veremos un caso práctico en Visual Studio y finalmente mostraremos una aplicación desarrollada con esta tecnológia disponible en Microsoft Store.Meetup @Mobile Development por Ismael Sanchez Web: https://ismael.leasplace.net.Net ADA-002 Ai Search AI Services Android Asistente Azure OpenAI Azure Video Indexer Blazor C# Capacitor Certificación Composer IONIC IOS MAUI MVP SUMMIT NodeJS OpenAi Outsystems PWA Stream Windows"
}

 

Como cualquier herramienta básica, este script tiene sus limitaciones. No puede manejar sitios que cargan contenido dinámico con tecnologías como Angular, React o Vue, ya que generan su contenido en el navegador. Para estos casos, herramientas como Puppeteer o Selenium podrían ser mejores opciones.

Es crucial tener en cuenta que algunos dominios cuentan con medidas de protección específicas contra web scrapers, lo que puede impedir que el script funcione correctamente. Antes de proceder a extraer información, recuerda siempre revisar las políticas de uso del sitio web en cuestión. Muchas páginas requieren obtener permisos previos y por escrito para realizar cualquier tipo de scraping. Respetar estas reglas no solo es una buena práctica, sino que también ayuda a evitar problemas legales o éticos.

 

Deja un comentario