我正在尝试使用nodeJs在Kwik Trip网站上搜索每日交易,但是在尝试对其进行爬网时,始终收到超时错误。不太确定会发生什么。有人知道会发生什么吗?
下面是我的代码,因为它是SPA,所以我试图等待.agendaItemWrap加载后再带回所有HTML。
function getQuickStar(req, res){
(async () => {
try {
const browser = await puppeteer.launch();
const page = await browser.newPage();
const navigationPromise = page.waitForNavigation({waitUntil: "domcontentloaded"});
await page.goto('https://www.kwiktrip.com/savings/daily-deals');
await navigationPromise;
await page.waitForSelector('.agendaItemWrap', { timeout: 30000 });
const body = await page.evaluate(() => {
return document.querySelector('body').innerHTML;
});
console.log(body);
await browser.close();
} catch (error) {
console.log(error);
}
})();
}
的网页的链接答案 0 :(得分:0)
您所需的选择器似乎位于iframe中,而不位于page.mainframe中。 然后,您需要等待自己的iframe,然后在此特定的iframe上执行waitForSelector。
快速提示:您不需要带有page.waitForNavigation
的{{1}},因为您可以在选项中设置page.goto
条件。默认情况下,它等待页面的onLoad事件。