Clase de titiritero: una excelente guía de aprendizaje del tutorial de titiritero 7

Clase de titiritero

Puppeteer, que es una biblioteca js de nodo de código abierto, se puede utilizar como herramienta de raspado web. La comprensión de la estructura DOM de línea de comandos, Javascript y HTML debería ser bueno para comenzar con este tutorial titiritero. El tutorial Series of Puppeteer se distribuye entre la subsección a continuación para obtener un buen control de Puppeteer. 

Tutorial de titiritero

Tutorial de Tosca # 1: Descripción general del titiritero

Tutorial de Tosca # 2: Variables de entorno del titiritero

Tutorial de Tosca # 3: Descripción general de la automatización de pruebas de titiritero y raspado web de titiritero

Tutorial de Tosca # 4: Instalar Titiritero

Tutorial de Tosca # 5: Proyecto de muestra de titiritero

Tutorial de Tosca # 6: Pruebas de automatización de titiriteros

Tutorial de Tosca # 7: Clase de titiritero

Tutorial de Tosca # 8: Clase de navegador titiritero

Tutorial de Tosca # 9: Clase de página de titiritero

En este tutorial de "Clase de titiritero", explicaremos las clases a continuación que incluyen los espacios de nombres importantes (si los hay), los eventos (si los hay) y los métodos que se utilizan con frecuencia en las técnicas de raspado web de Titiritero. 

Explicaremos componentes importantes con ejemplos a lo largo de este artículo.  

Clase de titiritero

Conceptualmente, la clase es un plano de un objeto que define un conjunto de instrucciones (variables y métodos). Aquí, la clase Puppeteer se define usando javascript para realizar diferentes acciones para realizar web scraping. Veamos el siguiente ejemplo, el módulo de la clase Puppeteer se ha utilizado para lanzar una instancia web de Chromium.

const puppeteer = require('puppeteer');
(async () => {
  const browserChrome = await puppeteer.launch();
  const pageChrome = await browserChrome.newPage();
  await pageChrome.goto('https://www.google.com');
  // We can write steps here
  await browserChrome.close();
})();

La clase Puppeteer también proporciona múltiples espacios de nombres y métodos, que admiten el proceso de raspado web. Los espacios de nombres y métodos de uso frecuente se explican en las siguientes secciones.

Clase Titiritero - Espacios de nombres:

Es un contenedor que define múltiples identificadores, métodos, variables, etc., en javascript. Es una forma de agrupar el código de forma lógica y organizada. Los siguientes espacios de nombres son proporcionados por la clase Titiritero.

puppeteer.devices: Devuelve una lista de dispositivos que puede utilizar el método page.emulate (opciones) para realizar scraping en dispositivos móviles. 

Ejemplo: abrir y cerrar la página web de Google en un dispositivo móvil -

const puppeteer = require('puppeteer');
const samsung = puppeteer.devices['Samsung J5'];
(async () => {
  const browserChrome = await puppeteer.launch();
  const pageChrome = await browserChrome.newPage();
  await pageChrome.emulate(samsung);
  await pageChrome.goto('https://www.google.com'); 
  await browserChrome.close();
})();

titiritero.errores: Al trabajar con diferentes métodos de titiritero, existe la posibilidad de excepciones. Sobre todo, si los métodos no pueden cumplir con las solicitudes, arroja errores. Hay diferentes clases definidas para manejar errores a través del espacio de nombres 'puppeteer.errors'.

Ejemplo: para el método page.waitForSelector, si el elemento web no aparece dentro del tiempo especificado, aparecerá el error de tiempo de espera. Consulte el siguiente ejemplo, que muestra un enfoque para manejar el tiempo de espera,

try {
  await page.waitForSelector('<web-element>');
} catch (err) {
  if (err instanceof puppeteer.errors.TimeoutError) {
    // Write code to handle the timeout error.
  }
} 

puppeteer.network Condiciones: Devuelve una lista de condiciones de red que se pueden usar en la página del método.emulateNetworkConditions (networkConditions). Se define la lista completa de condiciones de la red aquí.

Ejemplo: a través de esta muestra de código, abriremos la página web de Google utilizando una condición de red predefinida.

const puppeteer = require('puppeteer');
const net = puppeteer.networkConditions['Fast 3G'];
(async () => {
  const browserChrome = await puppeteer.launch();
  const pageChrome = await browserChrome.newPage();
  await pageChrome.emulateNetworkConditions(net);
  await pageChrome.goto('https://www.google.com');
  await browserChrome.close();
})();

titiritero.producto: Devuelve el nombre del navegador, que se utilizará para la automatización (Chrome o Firefox). El producto para el navegador se establece mediante la variable de entorno PUPPETEER_PRODUCT o la opción de producto disponible en el método de la clase titiritero puppeteer.launch ([opciones]). El valor predeterminado es Chrome.

Referencia: Presione aquí para obtener más información sobre los espacios de nombres de clases de titiriteros.

Clase de titiritero - Métodos:

Los métodos contienen declaraciones para realizar la acción específica. La clase de titiritero tiene los siguientes métodos,

puppeteer.clearCustomQueryHandlers () - Borra todos los controladores registrados.

puppeteer.connect (opciones) - Este método se utiliza para conectar titiritero con cualquier navegador existente. Devuelve un objeto de tipo promesa que indica el estado de este proceso asincrónico. Ejemplo: en el siguiente ejemplo, el titiritero se desconecta del navegador actual y se vuelve a conectar,

const puppeteer = require('puppeteer');
(async () => {
  const browserChrome = await puppeteer.launch();
  // Copy the endpoint reference which will be reconnected later
  const endpoint = browserChrome.wsEndpoint();
  // Disconnect puppeteer
  browserChrome.disconnect();
  // Use the endpoint to re-connect
  const browserChrome2 = await puppeteer.connect({endpoint});
  // Close second instance of Chromium
  await browserChrome2.close();
})();

puppeteer.createBrowserFetcher ([opciones]) - Crea un objeto de búsqueda del navegador para descargar y administrar las diferentes versiones de los navegadores (Chrome y Firefox).

const browserFetcher = puppeteer.createBrowserFetcher ();

puppeteer.customQueryHandlerNames () - Devuelve una matriz de todos los manejadores de consultas personalizados registrados.

puppeteer.defaultArgs ([opciones]) - Devuelve las opciones de configuración predeterminadas del navegador Chrome como una matriz durante el inicio. Además, podemos establecer las opciones configurables de un navegador usando la opción de argumento opcional.

const args = puppeteer.defaultArgs ();

puppeteer.executablePath () - Devuelve la ruta que espera el titiritero para la instancia del navegador incluido. La ruta que no estaría disponible en la descarga fue omitida por la variable de entorno PUPPETEER_SKIP_DOWNLOAD. Además, podemos usar las variables de entorno PUPPETEER_EXECUTABLE_PATH y PUPPETEER_CHROMIUM_REVISION para cambiar la ruta.

const args = puppeteer.executablePath ();

puppeteer.launch ([opciones]) - Este método de clase titiritero se utiliza para iniciar el navegador web. A través del argumento opcional, podemos pasar las diferentes configuraciones del navegador, como producto (nombre del navegador), headless, devtools, etc. Este método devuelve el objeto de promesa, que contiene la referencia del navegador iniciado.

navegador const = espera puppeteer.launch ();

puppeteer.registerCustomQueryHandler (nombre, queryHandler) - Se utiliza para registrar un controlador de consultas personalizado. Aquí, "nombre" proporciona el nombre del controlador de consultas y "queryHandler" define el controlador de consultas personalizado real.

puppeteer.unregisterCustomQueryHandler (nombre) - Se utiliza para anular el registro de cualquier controlador de consultas personalizado.

Referencia: Presione aquí para leer más sobre los métodos de la Clase Titiritero.

Clase objetivo

La clase objetivo proporciona métodos para trabajar con objetivos. Los métodos utilizados con más frecuencia que están disponibles con la clase de destino se explican en la siguiente sección.

Clase de destino - Métodos:

Los siguientes métodos están disponibles en la clase de objetivos:

  • Target.browser () - Devuelve el objeto del navegador que está vinculado al objetivo.
  • Target.browserContext () - Devuelve un objeto de tipo browserContext que está vinculado al objetivo.
  • Target.createCDPSession () - Crea y devuelve la sesión del protocolo devtool del Chrome, que se adjunta al objetivo.
  • Destino.opener () - Devuelve el objetivo que abre este objetivo. Básicamente, este método se usa para obtener el objetivo principal. Devuelve nulo para el objetivo de nivel superior.
  • Target.page () - Devuelve el objeto de página del destino. Si el tipo de destino no es una página, devuelve un valor nulo.
  • Tipo de objetivo() - Se usa para obtener el tipo de objetivo. El valor de retorno puede ser cualquiera de las opciones: 'background_page', 'page', 'shared_worker', 'service_worker', 'browser' u 'otro'.
  • Target.url () - Devuelve la URL del objetivo.
  • Target.worker () - Devuelve el objeto webworker. El valor de retorno es nulo si el objetivo no es 'service_worker' ni 'shared_worker'.

Referencia: Presione aquí para leer más sobre los métodos de la clase Target.

Clase ConsoleMessage

Los objetos de la clase ConsoleMessage se envían por página a través del evento de la consola. Los métodos de uso frecuente de la clase consoleMessage se explican en la siguiente sección.

Clase ConsoleMessage - Métodos:

Los siguientes métodos están disponibles en la clase ConsoleMessage:

  • consoleMessage.args () - Devuelve una matriz de objetos JSHandler. JSHandler evita que el objeto JS vinculado sea recolectado como basura hasta que se elimine el identificador. Se destruye automáticamente cuando se destruye el contexto del navegador principal.
  • consoleMessage.location () - Devuelve un objeto del recurso, que incluye los siguientes parámetros.
  • url: indica la URL del recurso conocido. Si no se conoce, se mantendrá un indefinido .
  • LineNumber: es el número de línea basado en 0 que está disponible en el recurso. Si no está disponible, se mantendrá un indefinido .
  • columnNumber: es el número de columna basado en 0 que está disponible en el recurso. Si no está disponible, se mantendrá un indefinido .
  • consoleMessage.stackTrace () - Devuelve una lista de objetos (cada objeto se refiere a un recurso) que incluye los siguientes parámetros.
  • url: indica la URL del recurso conocido. Si no se conoce, se mantendrá un indefinido .
  • LineNumber: es el número de línea basado en 0 que está disponible en el recurso. Si no está disponible, se mantendrá un indefinido .
  • columnNumber: es el número de columna basado en 0 que está disponible en el recurso. Si no está disponible, se mantendrá un indefinido .
  • consoleMessage.text () - Devuelve el texto de la consola.
  •  consoleMessage.type () - Devuelve la cadena como el tipo de mensaje de consola. El tipo puede ser cualquiera de los valores: log, debug, info, error, warning, dir, dirxml, table, trace, clear, startGroup, startGroupCollapsed, endGroup, assert, profile, profileEnd, count, timeEnd.

Referencia: Presione aquí para obtener más información sobre los métodos de la clase consoleMessage.

Clase TimeoutError

Al trabajar con diferentes titiriteros, existe la posibilidad de excepciones. Principalmente, si los métodos no pueden cumplir con las solicitudes, arroja errores. La clase TimeoutError se usa para manejar este tipo de excepción.

Ejemplo de clase TimeoutError: para el método page.waitForSelector, si el elemento web no aparece dentro del tiempo especificado, aparecerá el error de tiempo de espera. Consulte el siguiente ejemplo, que muestra un enfoque para manejar el tiempo de espera,

try {
  await page.waitForSelector('<element>');
} catch (e) {
  if (e instanceof puppeteer.errors.TimeoutError) {
    // Write code to handle the error.
  }
} 

Clase FileChooser

El objeto de clase del selector de archivos se crea utilizando el método page.waitForFileChooser. La clase FileChooser se usa para interactuar con archivos. Los métodos de uso frecuente de la clase FileChooser se explican en la siguiente sección.

Clase FileChooser - Métodos:

Los siguientes métodos están disponibles para la clase FileChooser:

  • fileChooser.accept (file_with_path) - Este método se utiliza para cargar cualquier archivo (para el cual se proporciona la ruta como argumento).
  • fileChooser.cancel () - Este método se utiliza para cancelar el proceso de carga de archivos.
  • fileChooser.isMultiple () - Este método comprueba si fileChooser permite seleccionar varios valores. Devuelve una expresión booleana (verdadera o falsa).

Un ejemplo de clase FileChooser -

const [fileChooser] = await Promise.all([
  page.waitForFileChooser(),
  page.click('#attach-button'), 
]);
await fileChooser.accept(['/puppeteer_proj/data/sample_file.pdf']);

Conclusión:

En este tutorial "Puppeteer Class", hemos explicado la clase Puppeteer, la clase Target, la clase MessageConsole y la clase TimeoutError, que incluye los espacios de nombres importantes (si los hay), los eventos (si los hay) y los métodos que se utilizan con frecuencia en las técnicas de raspado web Puppeteer. con ejemplos. En el próximo artículo, explicaremos BrowserContext, Browser y BrowserContext Class.

Sobre K Mondal

Clase de titiritero: una excelente guía de aprendizaje del tutorial de titiritero 7Hola, soy K. Mondal, estoy asociado con una organización líder. Tengo más de 12 años de experiencia laboral en varios dominios, por ejemplo, desarrollo de aplicaciones, pruebas de automatización, consultor de TI. Estoy muy interesado en aprender diferentes tecnologías. Estoy aquí para cumplir con mi aspiración y actualmente contribuyo como autor y desarrollador de sitios web en LambdaGeeks.
Conéctese a LinkedIn- https://www.linkedin.com/in/kumaresh-mondal/

Deja un comentario

Tu dirección de correo electrónico no será publicada.Los campos obligatorios están marcados *

en English
X