我正在构建一个网络爬虫,我是新手。它的作用是抓取用户提供的 URL 的亚马逊价格,然后每当价格低于用户设定的价格时发送电子邮件。我正在使用 SendGrid 发送电子邮件。
但是,我有一个问题。我想将脚本设置为每隔一小时左右自动运行一次,并在发现价格较低时发送电子邮件。在网上研究后,我发现 node-cron 可以帮助我做到这一点,而且确实做到了。但是,它仅在我的脚本在后台运行时才有效。
所以我的主要问题是,要运行脚本并发送电子邮件,我的脚本是否需要一直运行?如果不是我能做什么?
这是我的 cron.js 文件。我还有一个 AmazonTracker.js,其中包含用于跟踪价格和发送电子邮件的代码。
const cron = require('node-cron');
let shell = require('shelljs');
const url = process.argv[2]
// minimum price for which user wants an alert
const minPrice = process.argv[3]
const emailID = process.argv[4];
// scheduled to run every second
cron.schedule("* * * * * *", function() {
console.log("running");
if(shell.exec(`node AmazonTracker.js ${url} ${minPrice} ${emailID}`).code !== 0){
console.log("Something went wrong");
}
})
此外,在尝试运行某些链接的代码时出现此错误。我的脚本适用于某些链接,并为其他一些链接抛出此错误。如果有人有任何建议。
(node:4284) UnhandledPromiseRejectionWarning: Error: .wait() for #priceblock_dealprice timed out after 30000msec
at newDone (C:\Users\dtdan\node_modules\nightmare\lib\actions.js:545:9)
at Timeout._onTimeout (C:\Users\dtdan\node_modules\nightmare\lib\actions.js:578:5)
at listOnTimeout (internal/timers.js:549:17)
at processTimers (internal/timers.js:492:7)