Я пишу код, который очищает сайт Trailblazer . Веб-сайт Dynami c один, поэтому, когда я нажимаю кнопку Показать больше , он загружает другие значки, принадлежащие пользователю. Итак, есть ли у меня возможность нажать на эту кнопку, а затем дождаться добавления нового контента, прежде чем загружать разметку в cheerio для очистки.
В настоящее время я просто заставляю броузера ждать 3 секунды, прежде чем повторно нажмите, но это заставляет весь процесс занимать много времени, и он может также потерпеть неудачу, если браузер не может извлечь в это время.
Так есть ли альтернатива этому? Пожалуйста, найдите мой код ниже ->
const url = "https://trailblazer.me/id/akganesa";
// function to load the page
async function getPage() {
const browser = await puppeteer.launch({headless: true});
const page = await browser.newPage();
await page.goto(url, {waitUntil: 'networkidle0'});
const [first_button] = await page.$x("//button[contains(., 'Show More')]");
await first_button.click();
while (
(await (await page.$x("//button[contains(., 'Show More')]")).length) > 0
) {
const [button] = await page.$x("//button[contains(., 'Show More')]");
await button.click();
await page.waitForResponse(response => response.status() === 200);
}
const html = await page.content(); // serialized HTML of page DOM.
await browser.close();
return html;
}
// using cheerio to scrape
const html = await getPage();
const $ = cheerio.load(html);