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

166
Visualizações
Recorra las páginas y devuelva enlaces de productos en una sola matriz

Tengo el código que obtuve con algo de ayuda y se puede encontrar en este enlace AQUÍ . Funciona bien en principio, pero el problema es que devuelve enlaces y matrices para cada página por separado. Sin embargo, quiero que devuelva enlaces en una sola matriz para todas las páginas juntas. Necesito crear una cadena var all_links = [] y enviar todos los enlaces de cada página all_links.push(...links) y luego devolverlos como return all_links Pero el problema es que estoy fallando porque no No sé exactamente cómo hacerlo en este caso. Soy un principiante puro sin conocimientos previos en codificación.

 const puppeteer = require('puppeteer') const minDiscount = 20; async function getLinks() { const browser = await puppeteer.launch({ headless: false, defaultViewport: null, }); const page = await browser.newPage(); const url = 'https://www.mytoys.de/spielzeug-spiele/holz/'; await page.goto(url); // getting all the products, this will return an array of ElementHandle while(await page.$(".pager__link--next")){ await page.waitForSelector(".pager__link--next") await page.waitForTimeout(1000); await page.click('.pager__link--next') await page.waitForTimeout(1500); const products = await page.$$('.prod-grid.js-prod-grid .prod-grid__item.js-prod-grid_item'); const proms = await Promise.allSettled( products.map(async (prod) => { // searching for a discount on each product const disc = await prod.$$eval( '.prod-grid.js-prod-grid .prod-flag.prod-flag-sale', (discount) => discount.map((discItem) => discItem.innerText.replace(/[^0-9.]/g, '').replace(/\D+/g,'0') ) ); // if it has a discount if (disc.length > 0) { // we parse the discount to Integer type to compare it to minDiscount const discountInt = parseInt(disc[0], 10); if (discountInt >= minDiscount) { // we get the link of the product const link = await prod.$$eval('.prod-grid.js-prod-grid .prod-tile__link.js-prodlink', (allAs) => allAs.map((a) => a.href)); if (link.length > 0) { // push an object containing the discount and the link of the product return link[0]; } } } return null; }) ); const bulkArray = proms.map((item) => { if (item.status === 'fulfilled') return item.value; }); const endArray = bulkArray.filter(item => item !== null); console.log(endArray); } } getLinks();

Por favor, ayuda y ten piedad, ya que estoy empezando a aprender los conceptos básicos.

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Aquí hay una limpieza para comenzar:

 const products = await page.$$eval('.prod-tile', divs => divs.map(div => { return { url: div.querySelector('a')?.href discount: div.querySelector('.prod-flag-sale')?.innerText } }))

En este punto, simplemente siga los siguientes enlaces y haga lo mismo para cada página.

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