首页 > 解决方案 > 如何让 puppeteer 24/7 全天候抓取并检查元素是否实时消失

问题描述

所以我最终希望让它在像数字海洋这样 24/7 全天候运行的云平台上运行。它的目的是查看亚马逊上的商品是否有货。目前,我的代码没有做我想做的事,因为它只加载页面一次,并且只有在按钮存在时才会继续。如果页面上不存在该按钮并不断加载以获取实时结果,我如何让它记录?

const puppeteer = require('puppeteer');
const CronJob = require('cron').CronJob;





async function monitor() {
    try {
        const browser = await puppeteer.launch({ headless: true });
        let page = await browser.newPage();
        page.setUserAgent('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36');
        page.setDefaultTimeout(0);
        await page.goto('https://www.amazon.com/PULSE-3D-Wireless-Headset-PlayStation-5/dp/B08FC6QLKN/ref=sr_1_1?dchild=1&keywords=ps5&qid=1622262855&sr=8-1//');       

        await page.waitForSelector('#add-to-cart-button'); 
        await page.reload(load)
        console.log("In Stock")

} catch (e) {
    console.log('our error', e);
}
    };



monitor()

标签: javascriptnode.jsnpmpuppeteer

解决方案


把它放在一个while循环中

while(true){
  try {
    await page.waitForSelector('#add-to-cart-button')
    break        
  } catch(e) {
    await page.reload()
  }
}

推荐阅读