javascript - 如何让 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()
解决方案
把它放在一个while循环中
while(true){
try {
await page.waitForSelector('#add-to-cart-button')
break
} catch(e) {
await page.reload()
}
}
推荐阅读
- python - 将字符串拆分为二维数组python
- c - 数组不打印其中的第一个字母
- linux - 在bash中删除具有条件的类似目录
- opengl - GLSL 阴影映射:shadow2DProj 导致渲染伪影
- azure - 无法使用 Azure CLI 模板创建 SendGrid 资源 - “提供的订阅标识符无效”
- actionscript-3 - actionscript "var myObjectInst:myObject = new myObject(params);" 在 createJS 中
- prime-factoring - 在函数 FACTOR 的 PARI/GP 中,-1 是错误还是意味着其他?
- java - 如何使用观察者模式通过线程进行文件监控?
- spring-data - 根据文档,Spring Data Rest 不支持发布项目资源,但它支持吗?
- protractor - 量角器元素定位器是否需要 getter 函数