Chci seškrábat seznam příspěvků, zatímco se rolování stránky načítá donekonečna. Chci scrollIntoView()
pro každý prvek ve smyčce. můj kód je dočasně takový a výsledek, když se stránka načte, se vrátí, ale žádná chyba.
for (let i = 0; i < 20; i++) { const selector = 'div[role="feed"]:nth-child(2) div.sjgh65i0' await page.evaluate((selector, i) => { setTimeout(() => { const element = document.querySelectorAll(selector)[i] if(element) { element.scrollIntoView(); } }, 2000); }, selector, i) }
Například chci vzít 20 příspěvků a potom škrabka vezme příspěvky jeden po druhém.
Odpověď
Při vašem aktuálním toku jsou všechny časové limity nastaveny téměř najednou a poté se všechny spustí po stejných 2 sekundách.
Zkuste něco takového:
const selector = 'div[role="feed"]:nth-child(2) div.sjgh65i0'; for (let i = 0; i < 20; i++) { await page.waitForTimeout(2000); await page.evaluate((selector, i) => { const element = document.querySelectorAll(selector)[i]; if(element) { element.scrollIntoView(); } }, selector, i); }