Así que estoy tratando de raspar todos los conciertos en el área encuadrada en la imagen a continuación:
https://i.stack.imgur.com/7QIMM.jpg
El problema es que la lista solo presenta las primeras 10 opciones hasta que se desplaza hacia abajo en ese div específico hasta el final, y luego presenta dinámicamente más hasta que no hay más resultados. Intenté seguir la respuesta del enlace a continuación, pero no pude hacer que se desplazara hacia abajo para presentar todos los 'conciertos':
¿Cómo desplazarse dentro de un div con Puppeteer?
Aquí está mi código básico:
const browser = await puppeteerExtra.launch({ args: [ '--no-sandbox' ]}); async function functionName() { const page = await browser.newPage(); await preparePageForTests(page); page.once('load', () => console.log('Page loaded!')); await page.goto(`https://www.google.com/search?q=concerts+near+poughkeepsie&client=safari&rls=en&uact=5&ibp=htl;events&rciv=evn&sa=X&fpstate=tldetail`); const resultList = await page.waitForSelector(".odIJnf"); const scrollableSection = await page.waitForSelector("#Q5Vznb"); //I think this is the div that contains all the concert items. const results = await page.$$(".odIJnf"); //this needs to be iterable to be used in the for loop //this is where I'd like to scroll down the div all the way to the bottom for (let i = 0; i < results.length; i++) { const result = await (await results[i].getProperty('innerText')).jsonValue(); console.log(result) } }Pruebe esto para desplazarse hacia abajo en la lista de conciertos. Puedes seguir repitiendo hasta que el número de resultados deje de aumentar, o hasta que encuentres el concierto que buscas:
await page.evaluate(()=>{ document.querySelector("#Q5Vznb").scrollIntoView(false); });