Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

337
Views
Sesión de cierre Titiritero Nodo Js

Necesito la ayuda de alguien porque no entiendo lo que está pasando. Básicamente, construí un script que abre un sitio web y extrae texto de los td en una tabla que tiene el sitio web. Después de extraer, hará clic en el siguiente botón y volverá a extraer el texto ya que cambió. Cuando los extrae con éxito, debe cerrar el navegador y lo hace, pero no sé por qué después de cerrarlo arroja esto

C:\Users\ribei\node_modules\puppeteer\lib\cjs\puppeteer\common\Connection.js:214 return Promise.reject(new Error( Protocol error (${method}): Session closed. Most likely the ${this._targetType} has been closed. )); ^

Error: error de protocolo (Runtime.callFunctionOn): sesión cerrada. Lo más probable es que la página haya sido cerrada. en CDPSession.send (C:\Users\ribei\node_modules\puppeteer\lib\cjs\puppeteer\common\Connection.js:214:35) en ExecutionContext._evaluateInternal (C:\Users\ribei\node_modules\puppeteer\lib\ cjs\puppeteer\common\ExecutionContext.js:204:50) en ExecutionContext.evaluateHandle (C:\Users\ribei\node_modules\puppeteer\lib\cjs\puppeteer\common\ExecutionContext.js:155:21) en WaitTask.rerun (C:\Usuarios\ribei\node_modules\puppeteer\lib\cjs\puppeteer\common\DOMWorld.js:540:37)

Mi código

 const puppeteer = require('puppeteer'); var k = 0; var i = 0; (async () => { const browser = await puppeteer.launch(); const page = await browser.newPage(); await page.goto('https://www.pinksale.finance/#/launchpad/0xaD3cbb319c915104418c6fAd590EaB94C1940Ec1?chain=BSC'); const element = await page.waitForSelector('li.ant-pagination-item:nth-child(8) > a:nth-child(1)'); const value = await element.evaluate(el => el.textContent); const carteiras = await page.waitForSelector('table.has-text-centered > thead:nth-child(1) > tr:nth-child(1) > th:nth-child(2)'); const numerodecarteiras = await carteiras.evaluate(el => el.textContent); var matches = numerodecarteiras.match(/(\d+)/)[0]; for(i = 0; i<=value;i++) { for(let j = 1; j<=10;j++) { var a = 'table.has-text-centered > tbody:nth-child(2) > tr:nth-child('; var b = ') > td:nth-child(2) > div:nth-child(1)'; const element = await page.waitForSelector(a+j+b); const valor2 = await element.evaluate(el => el.textContent); console.log(valor2); k++ if(k == Number(matches)) { console.log('Número de wallets extraídas --->',k); await page.close(); await browser.close(); } } j = 1; await page.click('.ant-pagination-next > button:nth-child(1)'); } })();

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

La sesión se está cerrando porque tiene estas dos líneas dentro de su instrucción if:

 await page.close(); await browser.close();

Por lo tanto, puede moverlos debajo del bucle for como se muestra a continuación y el error desaparecerá. Y también elimine esta línea: j = 1; No entendí el uso de esta línea y aparentemente también es parte del error.

 async () => { var k = 0; var i = 0; const browser = await puppeteer.launch(); const page = await browser.newPage(); await page.goto('https://www.pinksale.finance/#/launchpad/0xaD3cbb319c915104418c6fAd590EaB94C1940Ec1?chain=BSC'); const element = await page.waitForSelector('li.ant-pagination-item:nth-child(8) > a:nth-child(1)'); const value = await element.evaluate(el => el.textContent); const carteiras = await page.waitForSelector('table.has-text-centered > thead:nth-child(1) > tr:nth-child(1) > th:nth-child(2)'); const numerodecarteiras = await carteiras.evaluate(el => el.textContent); var matches = numerodecarteiras.match(/(\d+)/)[0]; for (var i = 0; i <= value; i++) { for (let j = 1; j<=10; j++) { var a = 'table.has-text-centered > tbody:nth-child(2) > tr:nth-child('; var b = ') > td:nth-child(2) > div:nth-child(1)'; const element = await page.waitForSelector(a+j+b); const valor2 = await element.evaluate(el => el.textContent); console.log(valor2); k++ if(k == Number(matches)) { console.log('Número de wallets extraídas --->',k); } } await page.click('.ant-pagination-next > button:nth-child(1)'); } await res.end(); await browser.close(); })

Cuando haga esto, el código raspará 2 páginas y media (en lugar de 1 página). Por favor, déjeme saber si funciona.

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!