我有一个Puppeter node js应用程序,给定一个起始url,它跟随url并从它标识的每个页面中获取窗口的url。原来我用的是 setInterval
每250毫秒获取一次当前的url,但却偶然发现了 waitForNavigation
选择和需要知道我所拥有的是否可靠?
给定起始url,我需要识别所有页面,以及Puppeter通过的页面,然后使用 setTimeout
假设 puppet 演员在给定的时间段内没有重定向到新页面,假设没有更多的重定向。
意志 page.waitForNavigation
为这种预期行为工作?
我目前的工作是:
let evalTimeout;
// initiate a Puppeteer instance with options and launch
const browser = await puppeteer.launch({
args: argOptions,
headless: (config.puppeteer.run_in_headless === 'true') ? true : false
});
// launch a new page
const page = await browser.newPage();
// go to a URL
await page.goto(body.url);
// create a function to inject into the page to scrape data
const currentUrl = () => {
return window.location.href;
}
// log the current page every 250ms
async function scrapePageUrl (runOnce = false) {
try {
console.log('running timeout...')
if (!runOnce) {
evalTimeout = setTimeout(() => {
console.log('6s reached, running omce')
scrapePageUrl(true) // assumes no more redirections after 6s, get final URL
}, 6000)
}
const url = await page.evaluate(currentUrl);
if (!runOnce) await page.waitForNavigation();
console.log(`url: ${url}`)
if (!runOnce) {
clearTimeout(evalTimeout)
scrapePageUrl()
}
} catch (err) { }
}
scrapePageUrl()
暂无答案!
目前还没有任何答案,快来回答吧!