Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

133
Vistas
Titiritero no puede encontrar elementos cuando Headless TRUE

Estoy enfrentando algunos problemas con Puppeteer, quiero extraer una lista de elementos y tener éxito cuando headless es FALSO pero no cuando es VERDADERO.

Lo primero es lo primero, quiero obtener esos elementos antes de mapearlos.

Aquí está mi guión, tal vez puedas reproducirlo, es realmente básico.


 const chalk = require("chalk"); const baseUrl = "https://www.interencheres.com/recherche/lots?search="; const searchTerm = "Apple"; const searchUrl = baseUrl + searchTerm; (async () => { const browser = await puppeteer.launch({ headless: false, ignoreHTTPSErrors: true, args: [`--window-size=1920,1080`], defaultViewport: { width: 1920, height: 1080, }, }); const page = await browser.newPage(); // Begin navigation console.log(chalk.yellow("Beginning navigation.")); await page.goto(searchUrl); // Await List of elements; console.log(chalk.yellow("Wait for Network Idle...")); await page.waitForNetworkIdle(); // get Items const findElements = await page.evaluate(() => { const elements = document.querySelectorAll(".sale-item"); console.log(elements); return elements; }); console.log(findElements); console.log(chalk.blue("Waiting...")); await page.waitForTimeout(10000); await browser.close(); console.log(chalk.red("Closed.")); })();
 Expected results : { '0': { _prevClass: 'sale-item pa-1 col-sm-6 col-md-4 col-lg-3 col-12' }, '1': { _prevClass: 'sale-item pa-1 col-sm-6 col-md-4 col-lg-3 col-12' }, '2': { _prevClass: 'sale-item pa-1 col-sm-6 col-md-4 col-lg-3 col-12' }, '3': { _prevClass: 'sale-item pa-1 col-sm-6 col-md-4 col-lg-3 col-12' }, '4': { _prevClass: 'sale-item pa-1 col-sm-6 col-md-4 col-lg-3 col-12' }, . . }
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Para empezar, prefiero page.waitForSelector(yourSelector) sobre page.waitForNetworkIdle(); . En la mayoría de los casos, es una garantía más directa de que los datos que desea están en la página, mientras que la inactividad de la red puede bloquear la espera de todo tipo de solicitudes que son totalmente irrelevantes para los datos que está tratando de extraer.

Algunos sitios web verifican los encabezados para bloquear los raspadores. Puede intentar agregar un encabezado de agente de usuario como se describe en el problema de Puppeteer GitHub Comportamiento diferente entre { sin cabeza: falso } y { sin cabeza: verdadero } # 665 :

 const puppeteer = require("puppeteer"); const baseUrl = "https://www.interencheres.com/recherche/lots?search="; const searchTerm = "Apple"; const searchUrl = baseUrl + searchTerm; let browser; (async () => { browser = await puppeteer.launch({headless: true}); const [page] = await browser.pages(); await page.setUserAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36"); await page.goto(searchUrl); await page.waitForSelector(".sale-item"); const elements = await page.$$(".sale-item"); console.log(elements.length); // => 48 })() .catch(err => console.error(err)) .finally(() => browser?.close()) ;

Usando titiritero-extra como se describe en ¿Por qué headless necesita ser falso para que Titiritero funcione? es otra opción que puedes probar. También anonimiza los encabezados del agente de usuario.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda