diff --git a/backend/src/tools/koepi/routes.js b/backend/src/tools/koepi/routes.js index 7bc7cf4..15e1534 100644 --- a/backend/src/tools/koepi/routes.js +++ b/backend/src/tools/koepi/routes.js @@ -64,13 +64,22 @@ async function scrapeMarktguru() { await page.goto('https://www.marktguru.de/search/k%C3%B6nig%20pilsener?zipCode=47259', { waitUntil: 'networkidle2', timeout: 30000, }); - // Warte bis alle Bilder geladen sind - await page.evaluate(() => Promise.all( - Array.from(document.querySelectorAll('img.offer-list-item-img')).map(img => - img.complete ? Promise.resolve() : new Promise(r => { img.onload=r; img.onerror=r; setTimeout(r,5000); }) - ) - )).catch(() => {}); - await new Promise(r => setTimeout(r, 2000)); + // Seite nach unten scrollen damit lazy-loaded Bilder geladen werden + await page.evaluate(async () => { + await new Promise(resolve => { + let totalHeight = 0; + const distance = 300; + const timer = setInterval(() => { + window.scrollBy(0, distance); + totalHeight += distance; + if (totalHeight >= document.body.scrollHeight) { + clearInterval(timer); + resolve(); + } + }, 200); + }); + }); + await new Promise(r => setTimeout(r, 3000)); const offers = await page.evaluate(() => { // Exakte Selektoren basierend auf marktguru HTML-Struktur