位置: 编程技术 - 正文

nodejs批量下载图片的实现方法(nodejs实现文件下载)

编辑:rootadmin

推荐整理分享nodejs批量下载图片的实现方法(nodejs实现文件下载),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:nodejs实现jpg下载,nodejs怎么下载,node.js批量添加数据,node下载图片,nodejs实现文件下载,nodejs怎么下载,nodejs实现jpg下载,nodejs实现文件下载,内容如对您有帮助,希望把文章链接给更多的朋友!

今天想获取一大批猫的图片,然后就在流浪器搜索框中输入猫,然后点击图片。就看到了一大波猫的图片: 爬取图片链接

因为之前也写过nodejs爬虫功能,所以觉得应该很简单,就用cheerio来处理dom啦,结果打印一下啥也没有,后来查看源代码:

发现waterfall_zoom里面空空如也,查找了一下,发现所有的数据都是写在<script>里面,然后动态加载到页面的,所以用cheerio.load到的页面里面其实没数据的。真实数据:

分析完毕,刷刷写代码:

2. 下载图片到本地

2.1 粗糙的方案

最初的思路很简单,简单的fs.createWriteStream()就能解决:

使用方式:

nodejs批量下载图片的实现方法(nodejs实现文件下载)

成功捕获一只猫!然后写了一个循环准备捕获所有猫。然而这种方式是串行的,速度很慢!下载一大批图片要花大量时间。

2.2 使用async异步批量下载

关于async的map操作,详见:async_demo/map.js,对集合中的每一个元素,执行某个异步操作,得到结果。所有的结果将汇总到最终的callback里。与forEach的区别是,forEach只关心操作不管最后的值,而map关心的最后产生的值。

提供了两种方式:

并行执行。async.map同时对集合中所有元素进行操作,结果汇总到最终callback里。如果出错,则立刻返回错误以及已经执行完的任务的结果,未执行完的占个空位 顺序执行。async.mapSeries对集合中的元素一个一个执行操作,结果汇总到最终callback里。如果出错,则立刻返回错误以及已经执行完的结果,未执行的被忽略。

在此处:

注:此处使用setTimeout,是因为下载需要一定时间,在笔者较慢网速下,需要ms的间隔能确保每张图片下载完全。

成功捕获一批猫猫!

2.3 使用bagpipe批量

bagpipe是朴灵大大做的一个在nodejs中控制并发执行的模块。其安装和使用也比较简单:

使用:

在此处:

3.总结

作为一个程序员,能用程序解决就不手动解决。每一次尝都会有新的收获。

标签: nodejs实现文件下载

本文链接地址:https://www.jiuchutong.com/biancheng/380796.html 转载请保留说明!

上一篇:详解Node.js开发中的express-session(node 开发)

下一篇:深入理解nodejs中Express的中间件(node.js的概念)

  • 营业成本和生产成本的公式
  • 应付账款暂估款的会计分录
  • 电子汇票提示付款撤销
  • 财务章备案和不备份区别
  • 砖厂开票员的工作流程
  • 工商年报填好后怎样公示
  • 车船税代扣代缴手续费
  • 小企业周转材料报废残值回收应计入管理费用
  • 商铺租赁合同的用途怎么写
  • 收付转记凭证如何填写例题
  • 现金流量表借款还了流入和流出可以抵消吗
  • 营改增后开不了增值税发票怎么样办?
  • 跨地区经营建筑企业预缴增值税可以先开票后预缴吗
  • 国税代开增值税专票开错了如何处理?
  • 取得专用发票不交增值税
  • 民办非企业所得税免税政策
  • 维修属于劳务还是劳务
  • 税局代增值税专用发票 需要带什么
  • 环评公司的成本核算
  • 小规模劳务公司税率是多少
  • 微信支付宝余额为零的表情包
  • 专用发票的审核要多久
  • 存货清查的账务处理的阐述
  • 固态硬盘坏了的话是整个坏吗
  • 增值税普通发票和电子普通发票的区别
  • 企业收到政府补助需要开发票吗
  • 判断技巧
  • 联想一体机如何调节屏幕亮度
  • ThinkPHP让../Public在模板不解析(直接输出)的方法 原创
  • 预售卡怎么做会计分录
  • 如何通过路由器查看宽带账号密码
  • 专项用途财政性资金纳税调整表
  • PHP:curl_close()的用法_cURL函数
  • PHP:stream_set_blocking()的用法_Stream函数
  • Win11/10 Surface App 新增支持自动检测 Surface Slim Pen 1 手写笔
  • 以前年度应当取得而未取得的发票
  • 父母将住房无偿赠送给子女 增值税
  • 事件循环(Event Loop)
  • 董事费如何计算个人所得税
  • 办公用品属于会计科目中的什么
  • jdbc连接mysql的url怎么写
  • 第十七届全国大学生智能车
  • extrim命令详解
  • 公司的银行账号是不是和个人账号不一样
  • 定期存款怎么入门
  • sse后端向前端推送 前端只能收到 末尾的值
  • db2比较大小
  • 坏账准备的账务处理
  • 营业成本和生产费用一样吗
  • 管理人员工资结构
  • 现金日记账怎么记账
  • 办公室购买电脑属于什么费用
  • 资产处置损益的明细科目
  • 残保金工资总额是按计提还是发放
  • 测绘费发票图片
  • mysql触发器使用
  • windows 10预览版
  • xp附件游戏
  • windows7 记事本
  • linux安装.gz
  • Win7任务栏时间显示秒
  • qbdagent2002.exe - qbdagent2002是什么进程 有什么用
  • win8恢复出厂设置找不到恢复环境
  • win10外置光驱读不出光盘怎么办
  • 安卓飞行手游
  • python for key in
  • Bullet(Cocos2dx)之交叉编译Android,集成到cocos2dx3.x
  • qq自动登出
  • 关于javascript中数组的说法不正确
  • jni静态注册和动态注册
  • shell脚本ll
  • Unity KillCount
  • python中的变量
  • domcer下载
  • python框架flask系列
  • 开普通发票必须要纳税人识别号吗?
  • 工会开票要求
  • csc联合培养博士资助标准
  • 如何给局长送点礼品
  • 放管服中的服的深层含义
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设