El uso de Node.js para web scraping es una necesidad común, ya sea que desee recopilar datos de un sitio web para análisis o mostrarlos en su propio sitio. Node.js es una excelente herramienta para esta tarea.
Al leer este artículo, aprenderá:
Node.js
El web scraping es el proceso de extracción de datos de sitios web. Involucra el uso de herramientas o programas para simular el comportamiento del navegador y recuperar los datos necesarios de las páginas web. Este proceso también se conoce como cosecha web o extracción de datos web.
El web scraping tiene muchos beneficios, como:
"Node.js" es un entorno de ejecución de JavaScript de código abierto y multiplataforma que ejecuta código JavaScript en el lado del servidor. Creado por Ryan Dahl en 2009, está construido sobre el motor JavaScript V8 de Chrome. Node.js está diseñado para construir aplicaciones de red escalables y de alto rendimiento, especialmente aquellas que manejan un gran número de conexiones simultáneas, como servidores web y aplicaciones en tiempo real.
Node.js es un entorno de ejecución de JavaScript popular que le permite usar JavaScript para el desarrollo del lado del servidor. El uso de Node.js para web scraping ofrece varias ventajas:
¡Sin más preámbulos, comencemos con el scraping de datos con Node.js!
Primero, descargue e instale Node.js desde su sitio web oficial. Siga las guías de instalación detalladas para su sistema operativo.
Node.js ofrece muchas bibliotecas para web scraping, como Request, Cheerio y Puppeteer. Aquí, usaremos Puppeteer como ejemplo. Instale Puppeteer usando npm con los siguientes comandos:
mkdir web-scraping && cd web-scraping
npm init -y
npm install puppeteer-core
Cree un archivo, como index.js
, en el directorio de su proyecto y agregue el siguiente código:
goTo
se utiliza para abrir una página web. Toma dos parámetros: la URL de la página web para abrir y un objeto de configuración. Podemos establecer varios parámetros en este objeto, como waitUntil, que especifica regresar después de que la página haya terminado de cargar.waitForSelector
se utiliza para esperar a que aparezca un selector. Toma un selector como parámetro y devuelve un objeto Promise cuando el selector aparece en la página. Podemos usar este objeto Promise para determinar si el selector ha aparecido.content
se utiliza para obtener el contenido de la página. Devuelve un objeto Promise, que podemos usar para obtener el contenido de la página.page.$eval
se utiliza para obtener el contenido de texto de un selector. Toma dos parámetros: el primero es el selector y el segundo es una función que se ejecutará en el navegador. Esta función nos permite recuperar el contenido de texto del selector.const puppeteer = require('puppeteer');
async function run() {
const browser = await puppeteer.launch({
headless: false,
ignoreHTTPSErrors: true,
});
const page = await browser.newPage();
await page.goto('https://airbnb.com/experiences/1653933', {
waitUntil: 'domcontentloaded',
});
await page.waitForSelector('h1');
await page.content();
const title = await page.$eval('h1', (el) => el.textContent);
console.log(title);
await browser.close();
}
run();
Ejecute index.js
con el siguiente comando:
node index.js
Después de ejecutar el script, verá la salida en la terminal:
En este ejemplo, usamos puppeteer.launch()
para crear una instancia del navegador, browser.newPage()
para crear una nueva página, page.goto()
para abrir una página web, page.waitForSelector()
para esperar a que aparezca un selector y page.$eval()
para obtener el contenido de texto de un selector.
Además, podemos ir al sitio rastreado a través de un navegador, abrir la herramienta de desarrollo y luego usar el selector para encontrar el elemento que necesitamos, comparando el contenido del elemento con lo que obtenemos en el código para garantizar la consistencia.
Mientras utiliza Puppeteer para web scraping, algunos sitios web pueden detectar su actividad de scraping y devolver errores como 403 Forbidden. Para evitar la detección, puede utilizar varias técnicas como:
Estos métodos ayudan a evitar la detección, permitiendo que sus tareas de web scraping continúen sin problemas. Para técnicas avanzadas antidetección, considere utilizar herramientas como Nstbrowser - Navegador Avanzado Antidetección.