Utiliza Headless Chrome con Puppeteer

El entorno estándar de App Engine incluye todos los Paquetes de sistema necesarios para ejecutar Headless Chrome.

Puppeteer es un módulo de Node.js que ofrece una API de alto nivel para controlar Headless Chrome. Puedes instalar Puppeteer con npm:

npm install puppeteer

Inicia un navegador

Headless Chrome solo puede utilizarse en el entorno estándar de App Engine si se inhabilita la zona de pruebas. Para iniciar un navegador, emplea lo siguiente:

const browser = await puppeteer.launch({
  args: ['--no-sandbox']
});

La memoria que se encuentra disponible en una instancia de App Engine predeterminada no es suficiente para ejecutar Headless Chrome. Te recomendamos elegir una clase de instancia que tenga más memoria con el elemento instance_class en tu archivo app.yaml, por ejemplo:

runtime: nodejs8
instance_class: F4_1G

Toma capturas de pantalla

Aprende a tomar capturas de pantalla de páginas web con Headless Chrome en el entorno estándar de Google App Engine.

Requisitos previos

  1. Crea un proyecto en Google Cloud Platform Console.
  2. Habilita la facturación para tu proyecto.
  3. Instala el SDK de Cloud.
  4. Instala Node.js en tu máquina local.

Escribe la app

  1. Inicializa un archivo package.json mediante la ejecución del comando a continuación en una terminal:

    npm init
    
  2. Agrega una secuencia de comandos start al archivo package.json:

    "scripts": {
      "start": "node app.js"
    }
    
  3. Instala Express.js y Puppeteer:

    npm install express puppeteer
    
  4. Crea un archivo app.js con estos contenidos:

    const express = require('express');
    const puppeteer = require('puppeteer');
    const app = express();
    
    app.use(async (req, res) => {
      const url = req.query.url;
    
      if (!url) {
        return res.send('Please provide URL as GET parameter, for example: <a href="/?url=https://example.com">?url=https://example.com</a>');
      }
    
      const browser = await puppeteer.launch({
        args: ['--no-sandbox']
      });
      const page = await browser.newPage();
      await page.goto(url);
      const imageBuffer = await page.screenshot();
      browser.close();
    
      res.set('Content-Type', 'image/png');
      res.send(imageBuffer);
    });
    
    const server = app.listen(process.env.PORT || 8080, err => {
      if (err) return console.error(err);
      const port = server.address().port;
      console.info(`App listening on port ${port}`);
    });

Ejecuta la app de manera local

  1. Ejecuta la app de manera local con este comando:

    npm start
    
  2. Visita http://localhost:8080/?url=https://example.com para ver una captura de pantalla de la página web example.com.

Implementa la app

  1. Crea un archivo app.yaml con estos contenidos:

    runtime: nodejs8
    instance_class: F4_1G
  2. Ejecuta el comando a continuación para implementar tu app en App Engine:

    gcloud app deploy
    
  3. Visita http://YOUR_PROJECT_ID.appspot.com/?url=https://example.com para ver la ejecución de la aplicación en App Engine.

¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Documentación del entorno estándar de App Engine para Node.js