TUTORIAL Extrae datos de páginas web con Node.js: ¡Tutorial completo de Web Scraping!

jose

Administrator
Miembro del equipo
Buenas a todos! Hoy os traigo un tutorial para realizar scraping a una web utilizando Node.js. Si eres nuevo en este tema, no te preocupes, voy a explicar todo paso a paso, para que puedas seguirlo sin problemas. ¡Empecemos!

1682011470893.png

¿Qué es el Web Scraping?​

El Web Scraping es una técnica que se utiliza para extraer información de páginas web de forma automática. Con esta técnica podemos recopilar datos de sitios web y guardarlos en formatos útiles como JSON, CSV o incluso en bases de datos.

¿Qué necesitamos?​

Para este tutorial necesitaremos lo siguiente:
  • Node.js instalado en nuestro equipo
  • Un editor de texto (Visual Studio Code, Sublime Text, etc.) recomendado Visual Studio Code.
  • Conocimientos básicos de JavaScript y se selectores CSS

Instalando las dependencias​

Vamos a utilizar las siguientes librerías para facilitar el proceso de web scraping:
  • Axios: nos permitirá realizar peticiones HTTP
  • Cheerio: nos ayudará a analizar y extraer información de la página web
Para instalarlas, abre la terminal (desde Visual Studio Code si lo estás usando) y ejecuta el siguiente comando:
1682011587339.png
JavaScript:
Contenido sólo para usuarios registrados. Por favor inicia sesión o regístrate.

Realizando el scraping​


Paso 1: Crear el archivo de nuestro script
Crea un nuevo archivo llamado "scraping.js" en la carpeta de tu proyecto.

1682011654444.png

Paso 2: Importar las librerías

Añade las siguientes líneas al principio de tu archivo "scraping.js" para importar las librerías que instalamos:

JavaScript:
Contenido sólo para usuarios registrados. Por favor inicia sesión o regístrate.

Paso 3: Realizar la petición HTTP

Vamos a realizar una petición HTTP a la página web que queremos scrapear utilizando Axios. Añade la siguiente función en tu archivo "scraping.js":

JavaScript:
Contenido sólo para usuarios registrados. Por favor inicia sesión o regístrate.

Paso 4: Analizar y extraer la información

Ahora vamos a utilizar Cheerio para analizar el contenido de la página y extraer la información que nos interesa. Supongamos que queremos obtener los títulos de los artículos de un blog. Podemos hacerlo de la siguiente manera:

JavaScript:
Contenido sólo para usuarios registrados. Por favor inicia sesión o regístrate.

No olvides reemplazar "
Contenido sólo para usuarios registrados. Por favor inicia sesión o regístrate.
" por la URL de la página web que quieras scrapear y ajustar el selector de Cheerio ('$("article h2")') según la estructura del sitio y lo que quieras extraer.

* En este punto, si no controlas de selectores CSS puedes darle un vistazo a este otro post:
Contenido sólo para usuarios registrados. Por favor inicia sesión o regístrate.


Ejemplo: Extraer múltiples H1 de varias URLs y guardarlos en un archivo CSV​


En este ejemplo, vamos a ver cómo adaptar el script anterior para extraer los títulos H1 de varias URLs y guardarlos en un archivo CSV.

Paso 1: Instalar la librería adicional

Vamos a instalar la librería 'csv-writer' para facilitar la escritura en archivos CSV. Ejecuta el siguiente comando en la terminal:

JavaScript:
Contenido sólo para usuarios registrados. Por favor inicia sesión o regístrate.

Paso 2: Importar la librería

Añade la siguiente línea al principio de tu archivo "scraping.js" para importar la librería que acabamos de instalar:

JavaScript:
Contenido sólo para usuarios registrados. Por favor inicia sesión o regístrate.

Paso 3: Crear la función para guardar los H1 en un archivo CSV

Agrega la siguiente función en tu archivo "scraping.js":

JavaScript:
Contenido sólo para usuarios registrados. Por favor inicia sesión o regístrate.

Esta función creará un archivo llamado 'h1_data.csv' con las columnas 'URL' y 'H1', y guardará los datos extraídos en él.

Paso 4: Modificar la función principal para manejar múltiples URLs y extraer los H1

Reemplaza la función 'getArticleTitles' con la siguiente función:

JavaScript:
Contenido sólo para usuarios registrados. Por favor inicia sesión o regístrate.

No olvides reemplazar las URLs de ejemplo en el array 'urls' con las URLs de las páginas web que quieras scrapear.

Ahora, cuando ejecutes el script, extraerá los títulos H1 de todas las URLs proporcionadas y los guardará en un archivo CSV llamado 'h1_data.csv'.

¡Y eso es todo! Ahora tienes un script básico para realizar web scraping con Node.js. Puedes modificar y adaptar el código para extraer diferentes tipos de información según tus necesidades.

Espero que este tutorial te haya sido de utilidad y cualquier duda usa los comentarios! ;)
 
Volver
Arriba