У меня есть функция кукловода, которая запускается по сценарию Node JS, при запуске запускается моя начальная функция, однако после перехода на следующую страницу веб-сайта (в моем примере с использованием btnToClick
) она мне нужна переоценить страницу и собрать больше данных. Прямо сейчас я использую setInterval
, который предполагает, что общее время на чистку страницы составляет 12 секунд, я хотел бы иметь возможность снова запустить мою функцию extract
после ее завершения и продолжать ее до тех пор, пока nextBtn
возвращает 0.
Ниже мои текущие настройки:
function extractFromArea() {
puppeteer.launch({
headless: true
}).then(async browser => {
// go to our page of choice, and wait for the body to load
const page = await browser.newPage();
await page.setViewport({ width: 1280, height: 720 });
await page.goto('mypage');
const extract = async function() {
// wait before evaluating the page
await page.evaluate(() => {
// next button
const nextBtn = document.querySelectorAll('a.nav.next.rndBtn.ui_button.primary.taLnk').length
if (nextBtn < 1) {
// if no more pages are found
}
}
// wait, then proceed to next page
setTimeout(() => {
const btnToClick = document.querySelector('a.nav.next.rndBtn.ui_button.primary.taLnk')
btnToClick.click()
}, 2000)
});
};
// TODO: somehow need to make this run again based on when the current extract function is finished.
setInterval(() => {
extract()
}, 12000)
// kick off the extraction
extract()
});
}