Puppeteer es una biblioteca de Node.js que proporciona una API de alto nivel para controlar Chrome o Chromium sin interfaz gráfica a través del protocolo DevTools. Permite la automatización, prueba y raspado de páginas web en un navegador headless/headful.
Instalación de Titiritero: Para usar titiritero, debe tener instalado Node.js. Luego, Puppeteer se puede instalar en la línea de comando usando el administrador de paquetes npm.
npm install puppeteer
Uso de Puppeteer: la biblioteca de Puppeteer se puede importar en su secuencia de comandos usando:
const puppeteer = require('puppeteer');
Es importante recordar que Puppeteer es una biblioteca basada en promesas que realiza llamadas asincrónicas a la instancia de Chrome sin cabeza. Por lo tanto, lo envolvemos en un contenedor asíncrono. Esto significa que el código se ejecuta inmediatamente.
Aquí hay un ejemplo simple para tomar una captura de pantalla de una página:
Javascript
import Puppeteer const puppeteer = require('puppeteer'); (async () => { const browser = await puppeteer.launch(); // Open new page in headless browser const page = await browser.newPage(); // To visit page in browser await page.goto('https://scrapethissite.com'); // Save Screenshot at Path await page.screenshot({path: 'screenshot.png'}); // Close our browser instance await browser.close(); })();
Ejecutando su código: guarde su código como un archivo JavaScript y ejecútelo en la línea de comando usando el siguiente comando :
node filename.js
Ejemplo: el siguiente código devuelve un objeto con el nombre del equipo de hockey de la NHL y las victorias de ese año,
Javascript
const puppeteer = require('puppeteer'); (async () => { const browser = await puppeteer.launch(); const page = await browser.newPage(); await page.goto('https://scrapethissite.com/pages/forms/'); const textsArray = await page.evaluate( () => [...document.querySelectorAll( '#hockey > div > table > tbody > tr > td.name')] .map(elem => elem.innerText) ); const WinArray = await page.evaluate( () => [...document.querySelectorAll( '#hockey > div > table > tbody > tr > td.wins')] .map(elem => elem.innerText) ); var result = {}; textsArray.forEach((textsArray, i) => result[textsArray] = WinArray[i]); console.log(result); await browser.close(); })();
Producción:
{ ‘Boston Bruins’: ’36’, ‘Buffalo Sabres’: ’31’, ‘Calgary Flames’: ’31’, ‘Chicago Blackhawks’: ’36’,
‘Detroit Red Wings’: ’34’, ‘Edmonton Oilers ‘: ’37’, ‘Hartford Whalers’: ’31’, ‘Los Angeles Kings’: ’46’,
‘Minnesota North Stars’: ’27’, ‘Montreal Canadiens’: ’39’, ‘New Jersey Devils’: ’32’, ‘Isleños de Nueva York’: ’25’,
‘Rangers de Nueva York’: ’36’, ‘Philadelphia Flyers’: ’33’, ‘Pittsburgh Penguins’: ’41’, ‘Quebec Nordiques’: ’16’ ,
‘St. Louis Blues’: ’47’, ‘Toronto Maple Leafs’: ’23’, ‘Vancouver Canucks’: ’28’, ‘Washington Capitals’: ’37’,
‘Winnipeg Jets’: ’26’}
Publicación traducida automáticamente
Artículo escrito por prakharalt y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA