
本文将指导您如何部署一个基于node.js和puppeteer的网络爬虫,并利用windows任务计划程序实现其每日定时自动运行。我们将深入探讨服务器端脚本与静态网页的区别,提供详细的步骤配置任务计划,并讨论在自动化过程中需要注意的关键事项,如资源管理、错误处理及跨平台部署思路。
首先,我们需要明确您构建的网络爬虫(使用puppeteer和fs模块)是一个基于Node.js的服务器端(Server-side)应用程序,而非传统的客户端(Client-side)浏览器脚本。
您之前遇到的CORS错误,以及需要通过XAMPP才能运行的情况,很可能是因为您尝试以客户端脚本的方式去运行一个服务器端程序,或者在本地开发时,直接在浏览器中打开HTML文件导致浏览器限制了其对本地JSON文件的访问。Node.js爬虫的执行与您的静态HTML页面是相互独立的,爬虫负责数据抓取和存储,HTML页面则负责读取这些存储好的JSON数据并展示。
要在Windows系统上实现Node.js爬虫的定时自动运行,最直接且有效的方法是使用Windows任务计划程序(Task Scheduler)。
在配置任务计划之前,请确保您的系统已满足以下条件:
您的index.js核心逻辑如下,它使用Puppeteer抓取网页数据并保存到JSON文件:
const puppeteer = require('puppeteer');
const fs = require('fs');
async function scrapeData(url, selector, outputPath) {
let browser;
try {
browser = await puppeteer.launch({ headless: true }); // 生产环境建议 headless: true
const page = await browser.newPage();
await page.goto(url, { waitUntil: 'load', timeout: 0 });
const data = await page.evaluate((sel) => {
// 注意: page.evaluate 中的代码运行在浏览器上下文中,无法直接访问 Node.js 变量
// 因此,selector 需要作为参数传入
const element = document.querySelector(sel);
return element ? element.innerText : null;
}, selector); // 将 selector 传递给 page.evaluate
if (data) {
fs.writeFile(outputPath, JSON.stringify([data]), err => {
if (err) throw new Error(`写入文件失败: ${err.message}`);
console.log(`数据成功写入到 ${outputPath}`);
});
} else {
console.log(`未找到 ${selector} 对应的数据在 ${url}`);
}
} catch (error) {
console.error(`抓取 ${url} 时发生错误: ${error.message}`);
} finally {
if (browser) {
await browser.close(); // 确保关闭浏览器实例
}
}
}
// 每日执行的抓取任务
(async () => {
console.log('开始执行每日爬虫任务...');
await scrapeData(
'https://br.advfn.com/investimentos/futuros/di-depositos-interfinanceiros/cotacoes',
'.even.first',
'arreglo2.json'
);
await scrapeData(
'https://br.tradingview.com/symbols/TVC-DXY/',
'.js-quote-ticker.tv-site-table__row.tv-widget-watch-list__row:nth-child(2) .tv-widget-watch-list__cell--big', // 修正选择器以获取DXY值
'arreglo.json'
);
await scrapeData(
'https://br.advfn.com/bolsa-de-valores/fx/USDBRL/cotacao',
'.qs-current-price',
'cotacaoFechamento.json'
);
console.log('所有爬虫任务执行完毕。');
})();注意点:
按照以下步骤创建定时任务:
打开任务计划程序:
创建基本任务:
配置触发器:
配置操作:
完成:
在任务的属性对话框中,您可以进行一些高级配置:
错误处理与日志记录:
资源管理:
输出文件路径:
环境差异:
跨平台考虑:
通过将Node.js爬虫识别为服务器端应用,并利用Windows任务计划程序进行定时调度,您可以轻松实现其自动化运行。关键在于正确配置任务计划,确保Node.js可执行文件和脚本路径的准确性,并为爬虫脚本添加完善的错误处理、资源管理和日志记录机制。理解这些概念和实践,将使您能够更有效地部署和维护自动化数据抓取任务。
以上就是部署与自动化运行Node.js网络爬虫:使用Windows任务计划程序的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号