
本教程详细指导如何部署基于node.js和puppeteer的网络爬虫,并实现其自动化定时执行。文章区分了前端静态网站与后端node.js脚本的部署策略,重点介绍了在windows环境下使用任务计划程序(task scheduler)进行定时任务配置的方法,同时提及了cors问题产生的原因及解决方案,并提供了其他部署选项,确保爬虫数据能定期更新并服务于前端应用。
在开始部署之前,首先需要明确您所构建的系统包含两个主要部分:
由于这两部分运行环境不同,它们的部署策略也需要分开考虑。
您提供的index.js代码片段展示了使用Puppeteer抓取三个不同网站数据的过程,并将结果分别保存到arreglo2.json、arreglo.json和cotacaoFechamento.json文件中。
const puppeteer = require('puppeteer');
const fs = require('fs');
// 抓取第一个数据源
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://br.advfn.com/investimentos/futuros/di-depositos-interfinanceiros/cotacoes', {
waitUntil: 'load',
timeout: 0
});
const textNode = await page.evaluate(() => {
const nodeText = document.querySelector(".even.first").innerText;
return [nodeText];
});
fs.writeFile('arreglo2.json', JSON.stringify(textNode), err => {
if (err) throw new Error('algo deu errado');
console.log('deu certo');
});
await browser.close(); // 确保关闭浏览器实例
})();
// 抓取第二个数据源
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://br.tradingview.com/symbols/TVC-DXY/', {
waitUntil: 'load',
timeout: 0
});
const textNode = await page.evaluate(() => {
const nodeText = document.querySelector(".js-quote-ticker.tv-site-table__row.tv-widget-watch-list__row:nth-child(2)").children[1].children[1].children[0].innerHTML;
return [nodeText];
});
fs.writeFile('arreglo.json', JSON.stringify(textNode), err => {
if (err) throw new Error('algo deu errado');
console.log('deu certo');
});
await browser.close(); // 确保关闭浏览器实例
})();
// 抓取第三个数据源
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://br.advfn.com/bolsa-de-valores/fx/USDBRL/cotacao', {
waitUntil: 'load',
timeout: 0
});
const textNode = await page.evaluate(() => {
const nodeText = document.querySelector(".qs-current-price").innerText;
return [nodeText];
});
fs.writeFile('cotacaoFechamento.json', JSON.stringify(textNode), err => {
if (err) throw new Error('algo deu errado');
console.log('deu certo');
});
await browser.close(); // 确保关闭浏览器实例
})();注意事项:
为了实现每天早上8点自动运行index.js,我们需要利用操作系统的定时任务功能。
Windows任务计划程序是一个强大的工具,可以用来安排程序或脚本在特定时间自动运行。
配置步骤:
打开任务计划程序: 在Windows搜索栏中输入“任务计划程序”并打开。
创建基本任务: 在右侧“操作”面板中选择“创建基本任务...”。
任务名称和描述:
触发器:
操作:
示例配置:
完成: 检查配置摘要,然后点击“完成”。
白瓜面试
白瓜面试 - AI面试助手,辅助笔试面试神器
162
查看详情
现在,您的Node.js爬虫将在每天早上8点自动运行。
如果您在Linux或macOS服务器上部署,可以使用cron来调度任务。
打开Crontab编辑器: 在终端中输入 crontab -e。
添加任务行: 在文件末尾添加一行,指定执行时间和命令。
0 8 * * * /usr/local/bin/node /path/to/your/project/index.js >> /path/to/your/project/cron.log 2>&1
您的前端静态网站(HTML、CSS、处理JSON的J*aScript)可以像部署普通静态网站一样进行。
重要提示: 确保前端J*aScript能够通过相对路径正确访问到爬虫生成的JSON文件。这意味着爬虫生成的JSON文件需要与前端HTML文件部署在同一个Web服务器的可访问路径下。
您提到在本地直接打开file://协议的HTML文件时遇到CORS(跨域资源共享)错误。这是因为:
解决方案:
由于您的Node.js爬虫是服务器端脚本,它直接通过fs.writeFile操作本地文件系统,不涉及浏览器中的HTTP请求,因此不会遇到CORS问题。前端应用通过Web服务器访问这些JSON文件时,如果HTML和JSON文件都来自同一个源,也不会有CORS问题。
通过以上步骤,您可以在Windows系统上实现Node.js爬虫的自动化运行,并通过Web服务器提供数据给前端静态网站。
高级部署选项:
选择哪种部署方式取决于您的需求、预算以及对服务器管理的熟悉程度。对于个人项目,Windows任务计划程序或Linux Cron是最直接且免费的解决方案。
以上就是Node.js Puppeteer爬虫的部署与自动化运行指南的详细内容,更多请关注其它相关文章!
# linux
# nodejs
# javascript
# java
# html
# js
# css
# 自动运行
# 常州网站优化上哪里找
# 关闭浏览器
# 网站建设哪家公司便宜
# 义乌php网站建设制作
# seo发帖是真的吗
# 网站seo服务
# 提供网站就能优化阅读
# 西北定制网站建设管理
# 晋城推广seo优化
# 韩国关键词排名查询网站
# 黑帽seo培训 discuz
# 目录下
# 文件系统
# 早上
# 这是
# 可以使用
# 并将
# 可选
# 您的
# json
# git
# node.js
# 前端
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
优化推广96088 】
【
技术知识133117 】
【
IDC资讯59369 】
【
网络运营7196 】
【
IT资讯61894 】
相关推荐:
申通快件单号查询平台 申通包裹物流动态跟踪
《健康大兴》注册方法介绍
抖音如何进行蓝V认证 抖音企业号申请所需资料与流程
鼠标没反应了怎么办 无线/有线鼠标失灵的解决方法【详解】
Animex动漫社正版在线入口 Animex动漫社动漫官方观看网
《火花chat》搜索好友方法
网站体验不好=浪费钱:如何提升-用户体验效果差
《360浏览器》自动保存账号密码设置方法
植物大战僵尸95版游戏版下载_植物大战僵尸95版游戏版安装指南
快手极速版在线体验区 快手极速版网页体验入口
漫蛙manwa2网页版书签同步链接_漫蛙manwa多设备登录入口
《procreate》绘制渐变效果教程
抖音火山版注销账号抖音会注销吗 抖音火山版与抖音账号注销关系
《知到》打卡课程方法
《异星探险家》古怪的物品作用介绍
解决Go encoding/json 将JSON大数字解析为浮点数的问题
快手缓存清理方法
sublime如何撤销关闭的标签页_sublime重新打开已关闭文件技巧
Win11如何分屏操作_Win11多窗口分屏技巧
三角洲行动2025年9月10日摩斯密码分享
J*a中的值传递到底指什么_值传递模型在参数传递中的真正含义说明
PPT页面尺寸怎么修改 PPT自定义幻灯片大小与方向设置【教程】
J*aScript二进制处理_ArrayBuffer与Blob
c++如何掌握指针的核心用法_c++指针入门到精通指南
C++如何实现单例模式_C++线程安全的单例模式写法
包子漫画官网链接官方地址 包子漫画在线观看官网首页入口
空腹吃苹果好吗 苹果空腹摄入指南
圆通快递包裹轨迹查询 圆通速递快件实时位置跟踪
使用jQuery精确检测除指定元素外任意位置的点击事件
《微信》视频号原创声明开启方法
《金山词霸》语音翻译方法
C#解析来自网络的XML流数据 实时错误处理与重试机制
Golang如何实现HTTP请求重试机制_Golang HTTP请求错误处理策略
《合金装备4》有望推出重制版!制作人发话了
嘀嗒顺风车如何开具电子发票
漫蛙漫画官方网站使用_漫蛙manwa网页版在线入口教程
抖音号怎么解除企业认证改成个人?改成个人有影响吗?
如何配置VS Code作为您Git操作的默认编辑器
composer 提示 "requires ext-soap" 缺少 SOAP 扩展怎么办?
PHP页面重载时变量值不重置的实现方法
《狐友》联系客服方法
Retrofit根路径POST请求:@POST("/") 的应用与解析
睡觉时心跳快是什么原因 夜间心悸如何应对
C++ switch case字符串_C++如何实现字符串switch匹配
《海底捞》点外卖方法
Lar*el Eloquent中通过Join查询关联数据表:解决多行子查询问题
Final Cut Pro视频加EQ教程
在XML中嵌入二进制数据(如图片)的最佳实践是什么? Base64编码与解析注意事项
CSS如何使用outline-offset与颜色组合突出元素边框
使用TinyButStrong生成HTML并结合Dompdf创建PDF教程
2025-11-27
运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。