Saltar al contenido

¿Quieres raspar la mesa usando Puppeteer? ¿Cómo puedo obtener todas las filas, recorrer filas y luego obtener “td” para cada fila?

Agradeceríamos tu apoyo para compartir nuestros tutoriales sobre las ciencias de la computación.

Una forma de lograr esto es usar la evaluación que primero obtiene un array de todos los TD's luego devuelve el contenido de texto de cada TD

const puppeteer = require('puppeteer');

const html = `

    
      
OneTwo
ThreeFour
`; (async () => const browser = await puppeteer.launch(); const page = await browser.newPage(); await page.goto(`data:text/html,$html`); const data = await page.evaluate(() => const tds = Array.from(document.querySelectorAll('table tr td')) return tds.map(td => td.innerText) ); //You will now have an array of strings //[ 'One', 'Two', 'Three', 'Four' ] console.log(data); //One console.log(data[0]); await browser.close(); )();

También podría usar algo como: –

const data = await page.$$eval('table tr td', tds => tds.map((td) => 
  return td.innerText;
));

//[ 'One', 'Two', 'Three', 'Four' ]
console.log(data);

Método de matriz bidimensional

También puede raspar el innerText en un bidimensional array representando su mesa.

[
  ['A1', 'B1', 'C1'], // Row 1
  ['A2', 'B2', 'C2'], // Row 2
  ['A3', 'B3', 'C3']  // Row 3
]

página.$$eval()

const result = await page.$$eval('#example-table tr', rows => 
  return Array.from(rows, row => 
    const columns = row.querySelectorAll('td');
    return Array.from(columns, column => column.innerText);
  );
);

console.log(result[1][2]); // "C2"

página.evaluar()

const result = await page.evaluate(() => 
  const rows = document.querySelectorAll('#example-table tr');
  return Array.from(rows, row => 
    const columns = row.querySelectorAll('td');
    return Array.from(columns, column => column.innerText);
  );
);

console.log(result[1][2]); // "C2"

Comentarios y valoraciones del tutorial

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags :

Utiliza Nuestro Buscador

Deja una respuesta

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