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

496
Visualizações
Problema de raspado de datos con todas las mismas clases con titiritero

Estoy tratando de extraer todos los datos de precios de este sitio https://www.bynogame.com/tr/oyunlar/knight-online/gold-bar usando el titiritero.

Puedo eliminar los precios uno por uno, pero no puedo obtener todos los elementos p, se devuelven datos nulos. Aquí está mi código que funciona para desechar uno por uno, y el siguiente código para desechar todos los datos que no funcionan. ¿Dónde estoy haciendo mal?

 const puppeteer = require("puppeteer"); const gb = async () => { const browser = await puppeteer.launch(); const page = await browser.newPage(); await page.goto('https://www.bynogame.com/tr/oyunlar/knight-online/gold-bar'); const data = await page.$eval('body > div.container.mb-5 > div > div:nth-child(1) > div.col-md-18.order-1.order-sm-12 > div > div:nth-child(1) > div > div > div.col-md-21 > div > div.col-md-4 > div > div > div > p', el => el.textContent); //Output is true await browser.close(); console.log(data) }; gb(); //Here is not work. const data = await page.$$eval('.col-md-24 mb-2 itemDiv .itemCard .row d-flex align-items-center .col-md-21 .row d-flex align-items-center .col-md-4 .row d-flex flex-column .col .div p', obj => obj.map(p => p.textContent));
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

No había ningún elemento con .col-md-24 mb-2 itemDiv .itemCard .row d-flex align-items-center .col-md-21 .row d-flex align-items-center .col-md-4 .row d-flex flex-column .col .div p selector en la página https://www.bynogame.com/tr/oyunlar/knight-online/gold-bar .

Puede intentarlo yendo a la página, luego abra la consola y ejecute document.querySelectorAll . Por ejemplo:

 document.querySelectorAll('.col-md-24 mb-2 itemDiv .itemCard .row d-flex align-items-center .col-md-21 .row d-flex align-items-center .col-md-4 .row d-flex flex-column .col .div p')

Me muestra una matriz vacía, lo que significa que ningún elemento HTML coincide con el selector dado.

No necesita un selector tan largo. Cuando esté en la página, puede ver que el precio estaba dentro de la etiqueta <p> , con clases de font-weight-bolder text-black m-0 . En primer lugar, verifique si algún otro elemento comparte el mismo selector que el precio consultando la etiqueta <p> , con clases de font-weight-bolder text-black m-0 en la consola.

 document.querySelectorAll('p.font-weight-bolder.text-black.m-0') --- Output --- NodeList(9) [ p.font-weight-bolder.text-black.m-0, p.font-weight-bolder.text-black.m-0, p.font-weight-bolder.text-black.m-0, p.font-weight-bolder.text-black.m-0, p.font-weight-bolder.text-black.m-0, p.font-weight-bolder.text-black.m-0, p.font-weight-bolder.text-black.m-0, p.font-weight-bolder.text-black.m-0, p.font-weight-bolder.text-black.m-0 ]

Al verificar la salida, descubrí que los elementos devueltos tenían el precio que estaba buscando. Por lo tanto, puedo sustituir el selector correcto en la page.$$eval . El código final será

 const puppeteer = require("puppeteer"); const gb = async () => { const browser = await puppeteer.launch(); const page = await browser.newPage(); await page.goto("https://www.bynogame.com/tr/oyunlar/knight-online/gold-bar"); // Get element with <p class="font-weight-bolder text-black m-0"> const data = await page.$$eval("p.font-weight-bolder.text-black.m-0", (obj) => obj.map((p) => p.textContent) ); await browser.close(); console.log(data); }; gb();
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