位置: IT常识 - 正文

Node.js基础入门第六天(node.js入门教程)

编辑:rootadmin
经过前面五天的学习,对Node.js开发已经逐渐入门,今天结合之前学到的东西,开发一个小示例【爬取某图片网站的图片】来巩固基础知识,仅供学习分享使用,如有不足之处,还请指正。 ...

推荐整理分享Node.js基础入门第六天(node.js入门教程),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:node.js基础知识,node.js基础知识,node-js,node.js教程详细,node.js基础知识,node.js快速入门,node.js入门教程,node.js入门教程,内容如对您有帮助,希望把文章链接给更多的朋友!

经过前面五天的学习,对Node.js开发已经逐渐入门,今天结合之前学到的东西,开发一个小示例【爬取某图片网站的图片】,仅供学习分享使用,如有不足之处,还请指正。

涉及知识点

开发一个小爬虫,涉及的知识点如下所示:

https模块,主要是用户获取网络资源,如:网页源码,图片资源等。cheerio模块,主要用于解析html源码,并可访问,查找html节点内容。fs模块,主要用于文件的读写操作,如保存图片,日志等。闭包,主要是对于异步操作,对象的隔离保护。cheerio简介什么是cheerio ?

cheerio是为服务器特别定制的,快速、灵活、实施的jQuery核心实现。主要用于在服务端解析html。特点如下所示:

易用,语法类似jQuery语法,从jQuery库中去除了所有 DOM不一致性和浏览器尴尬的部分。解析快,比JSDOM快八倍。灵活,Cheerio 封装了兼容的htmlparser。Cheerio 几乎能够解析任何的 HTML 和 XML document。安装cheerio

首先在命令行,切换到程序目录,然后输入安装命令进行安装,如下所示:

1 cnpm install cheerio

安装过程,如下所示:

准备工作

在编写爬虫之前,首先需要分析目标内容,本次需要爬取的是某网站,星空类型的图片内容,经过分析,发现所有的图片都是在ul下每一个li中的a标签内的img中,本次只需要解析出img的src属性,即可获取图片的下载路径。如下所示:

Node.js基础入门第六天(node.js入门教程)

核心代码

经过以上分析,通过Node.js编写代码,分为两步,获取所有图片的url路径,即解析所有目标img元素的src属性。然后再下载具体图片进行保存即可。

引用所需要的功能模块,如下所示:

1 var https = require('https');2 var cheerio = require('cheerio');3 var fs = require('fs');

获取并解析html页面内容,如下所示:

1 //爬取的网址 2 var addrs=['https://www.*****.com/topic/show_27202_1.html','https://www.******.com/topic/show_27202_2.html','https://www.*****.com/topic/show_27202_3.html']; 3 var logger = fs.createWriteStream('./download/log.txt',{flags:'a+',autoClose:'true'}); 4 5 for(i in addrs){ 6 (function(num){ 7 var addr = addrs[num]; 8 //创建目录 9 var p1 = new Promise(function(resolve,reject){10 fs.access('./download',function(err){11 if(err){12 fs.mkdir('./download',function(e){13 if(e){14 console.log('创建失败');15 }16 });17 }else{18 resolve("success");19 }20 }); 21 });22 23 p1.then(function(datas){24 var html='';25 var p2 = new Promise(function(resolve,reject){26 https.get(addr,function(res){27 res.on('data',function(data){28 html+=data.toString();29 })30 res.on('end',function(){31 resolve("success");32 });33 34 });35 36 });37 p2.then(function(data){38 //下载完成后,进行解析39 const $ =cheerio.load(html);40 var lis = $('#img-list-outer').find('li');41 for(var j=0;j<lis.length-1;j++){42 var li = lis[j];43 var src =$(li).find('a').find('img').attr('src');44 //console.log(src);45 //console.log('-------------------------');46 var imgurl='https:'+src;47 download(imgurl);48 var msg='['+j+']下载成功:'+imgurl;49 logger.write(msg+'\n');50 console.log(msg);51 }52 });53 });54 })(i);55 }

注意:因为所有爬取的目标共分为3页,所以用到了循环,并且在循环中用到了闭包。

下载并保存单张图片代码,如下所示:

1 //下载图片 2 function download(imgurl){ 3 var p1 = new Promise(function(resolve,reject){ 4 https.get(imgurl,function(res){ 5 var imgName=imgurl.substr(imgurl.lastIndexOf('/')+1); 6 var stream = fs.createWriteStream('./download/'+imgName); 7 res.pipe(stream); 8 setTimeout(function(){ 9 resolve('success');10 },300);11 12 });13 });14 p1.then(function(data){15 return;16 });17 }示例截图

开发完成后,运行代码,如下所示:

爬取的图片,保存在文件夹中,如下所示:

注意:添加日志,是为了方便记录程序执行过程,对比图片和日志,便于发现问题。

备注

学而时习之,不亦说乎?有朋自远方来,不亦乐乎?人不知而不愠,不亦君子乎?

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

上一篇:给织梦添加复制文档的功能(织梦网站怎么添加关键词)

下一篇:Dedecms 自定义表单提交后自动发送表单数据到指定邮箱的思路(dedecms使用教程)

  • win10如何删除360导航强制主页(win10如何彻底删除360浏览器)

    win10如何删除360导航强制主页(win10如何彻底删除360浏览器)

  • 默认存储位置Sd卡什么影响(默认存储位置改为sd卡没有用)

    默认存储位置Sd卡什么影响(默认存储位置改为sd卡没有用)

  • 腾讯视频怎么下载到手机(腾讯视频怎么下载到手机相册)

    腾讯视频怎么下载到手机(腾讯视频怎么下载到手机相册)

  • 苹果手机能手写打字吗(苹果手机能手写字吗怎么设置)

    苹果手机能手写打字吗(苹果手机能手写字吗怎么设置)

  • 小米设置3D按压功能(小米设置3d按压在哪)

    小米设置3D按压功能(小米设置3d按压在哪)

  • 钉钉可以看到学生的屏幕吗(钉钉可以看到学生开悬浮窗吗)

    钉钉可以看到学生的屏幕吗(钉钉可以看到学生开悬浮窗吗)

  • 苹果手机语音发不出去是什么原因(苹果手机语音发不出去系统错误)

    苹果手机语音发不出去是什么原因(苹果手机语音发不出去系统错误)

  • 充电5分钟通话2小时是什么手机(充电5分钟通话2次正常吗)

    充电5分钟通话2小时是什么手机(充电5分钟通话2次正常吗)

  • 华为荣耀9x是不是双卡双待(华为荣耀9X是不是X系列的)

    华为荣耀9x是不是双卡双待(华为荣耀9X是不是X系列的)

  • 22寸显示器分辨率多少(22寸显示器分辨率最大多少)

    22寸显示器分辨率多少(22寸显示器分辨率最大多少)

  • 手机怎么拍绿色(手机怎么拍绿色背景的视频)

    手机怎么拍绿色(手机怎么拍绿色背景的视频)

  • vivo nex3怎么设置抬手亮屏(vivonex3怎么设置5g网)

    vivo nex3怎么设置抬手亮屏(vivonex3怎么设置5g网)

  • 华为mate30可以插内存卡吗(华为mate30可以插两张电信卡吗)

    华为mate30可以插内存卡吗(华为mate30可以插两张电信卡吗)

  • qq友谊的小船是单向还是双向(qq友谊的小船是单向)

    qq友谊的小船是单向还是双向(qq友谊的小船是单向)

  • vsco x怎么取消订阅(vsco怎么取消订阅)

    vsco x怎么取消订阅(vsco怎么取消订阅)

  • 字体美化大师下载的字体用不了怎么办(字体美化大师下载旧版)

    字体美化大师下载的字体用不了怎么办(字体美化大师下载旧版)

  • 微信零钱明细和账单对不上为什么(微信零钱明细和账单明细的区别)

    微信零钱明细和账单对不上为什么(微信零钱明细和账单明细的区别)

  • 钉钉视频怎么保存手机(钉钉视频怎么保存到百度网盘)

    钉钉视频怎么保存手机(钉钉视频怎么保存到百度网盘)

  • iphone设置某人来电静音(iphone怎么设置某人来电特别提醒)

    iphone设置某人来电静音(iphone怎么设置某人来电特别提醒)

  • 小米6如何root(小米6如何root权限)

    小米6如何root(小米6如何root权限)

  • macOS如何复制粘贴无格式文本 macOS粘贴不带格式文字的方法(macos的复制粘贴快捷键)

    macOS如何复制粘贴无格式文本 macOS粘贴不带格式文字的方法(macos的复制粘贴快捷键)

  • 电脑管家游戏加速功能是什么?(电脑管家游戏加速怎么卸载)

    电脑管家游戏加速功能是什么?(电脑管家游戏加速怎么卸载)

  • 如何修复Win7系统ip地址错误?(如何修复win7系统引导)

    如何修复Win7系统ip地址错误?(如何修复win7系统引导)

  • 增值税结转会计科目
  • 折扣方式销售货物增值税
  • 公户结算卡最多可以拿多少现金
  • 一般纳税人必须开13个点吗
  • 销售折让开具红字
  • 货已到发票未到跨年怎么做账
  • 工程设备租赁带什么手续
  • 主营业务收入计入什么明细账
  • 不动产分割的法律规定
  • 已结转的凭证可以取消结转吗
  • 暂估应付账款借方余额
  • 住房租赁补贴
  • 建筑企业在增值税方面新出台的政策
  • 工商年检社保缴费基数按什么标准填
  • 适用增值税差额征税的小规模纳税人
  • 小规模纳税人已经开了3%的票还可以享受1%的优惠吗
  • 发票涉税风险有哪些
  • 多计提的冲回如何记账?
  • 技术服务费属于什么大类
  • 差额发票如何缴纳增值税
  • 车位销售代理合同
  • 开办企业验资
  • 劳务派遣公司开票几个点
  • 结转成本的会计分录摘要怎么写
  • 印花税需要哪些部门核准
  • 交易性金融资产入账价值怎么计算
  • rftray.exe - rftray是什么进程 有什么用
  • 坏账准备确认条件
  • 新会计准则2020变化
  • linux命令行使用鼠标
  • 文竹叶子发黄怎么办
  • 拍卖有抵押的车子怎么处理
  • 公转私备注用途
  • php时间函数代码
  • 融资性售后回租承租方为什么不交税
  • u-net优点
  • 浅谈php中的错误处理方法
  • vue中的echarts
  • 目标检测yolo
  • react错误处理
  • opencv图像识别特定形状
  • vue修饰词
  • mongodb 分组计数
  • mongodb从入门到商业实战
  • 科技公司技术服务费税率
  • 设计规划费入什么科目
  • 暂估入库后发票来不了
  • 电子承兑汇票怎么查询
  • 银行手续费没有发票
  • 供应商退回来的钱应走哪个科目
  • 会计凭证后面需要打勾的是
  • 简述公司利润分配的程序
  • 服务企业的举措
  • 如何在sql server表中添加数据表格为什么没有显示
  • MySQL 5.5.x my.cnf参数配置优化详解
  • mysql中汉字用什么类型
  • 系统图工具
  • window10路由
  • linux Intel 845集成显示驱动下载
  • jquery实现仿新浪微博带动画效果弹出层代码(可关闭、可拖动)
  • http状态码一览表
  • xcopy /s /e
  • sqlserver 服务器
  • linux curl命令详解
  • node.js promise
  • javascript高级程序设计最新版
  • android点击事件传递机制
  • JavaScript window.setTimeout() 的详细用法
  • js中slice方法的作用
  • prototype模型
  • python爬虫有道翻译
  • 收到123660的短信是什么意思
  • 什么是出口退税政策
  • 个人出租房屋如何计税?看这篇
  • 新车购置税是多少
  • 个人所得税完税证明在哪里查询打印
  • 手撕发票查询真伪平台
  • 乡镇四所是指哪些所
  • 个人所得税税务审核不通过怎么办
  • 请领导审核怎么说
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设