Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

135
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda