位置: 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使用教程)

  • QQ怎么去除青少年模式(qq如何关闭青少年模式)

    QQ怎么去除青少年模式(qq如何关闭青少年模式)

  • 支付宝怎么买火车票(支付宝怎么买火车票注册账号)

    支付宝怎么买火车票(支付宝怎么买火车票注册账号)

  • 微信一直安装失败是什么情况(微信一直安装失败原因电脑)

    微信一直安装失败是什么情况(微信一直安装失败原因电脑)

  • qq请勿打扰是什么意思(qq 请勿打扰)

    qq请勿打扰是什么意思(qq 请勿打扰)

  • 手机疯狂收到验证码怎么解决(手机疯狂收到验证短信)

    手机疯狂收到验证码怎么解决(手机疯狂收到验证短信)

  • 路由器管理网址怎么看(联通路由器管理网址)

    路由器管理网址怎么看(联通路由器管理网址)

  • 手机删除照片能恢复吗(手机删除照片能找回来不)

    手机删除照片能恢复吗(手机删除照片能找回来不)

  • word怎么保存为docx格式(word怎么保存为docx)

    word怎么保存为docx格式(word怎么保存为docx)

  • 华为手机可以改密保问题吗(华为手机可以改应用名称吗)

    华为手机可以改密保问题吗(华为手机可以改应用名称吗)

  • 手机恢复出厂设置对手机有影响吗(手机恢复出厂设置是不是彻底干净)

    手机恢复出厂设置对手机有影响吗(手机恢复出厂设置是不是彻底干净)

  • iphone运行内存在哪看(iphone运行内存不足怎么解决办法)

    iphone运行内存在哪看(iphone运行内存不足怎么解决办法)

  • 为什么删除文件提示需要权限(为什么删除文件后磁盘空间还是不变)

    为什么删除文件提示需要权限(为什么删除文件后磁盘空间还是不变)

  • 华为mate40x大概什么时候出

    华为mate40x大概什么时候出

  • 京东怎么分享链接给好友(京东怎么分享链接给微信好友)

    京东怎么分享链接给好友(京东怎么分享链接给微信好友)

  • qq音乐扫一扫在哪里(qq音乐扫一扫功能)

    qq音乐扫一扫在哪里(qq音乐扫一扫功能)

  • 360N6Pro可以双卡双待吗(360手机双卡)

    360N6Pro可以双卡双待吗(360手机双卡)

  • a1700苹果6s是全网通吗(苹果6s型号a1700是几英寸的)

    a1700苹果6s是全网通吗(苹果6s型号a1700是几英寸的)

  • 华为caztl10是什么型号(华为cazcl10是)

    华为caztl10是什么型号(华为cazcl10是)

  • hdr4k蓝光是什么意思(hdr4k和蓝光4k哪个效果好)

    hdr4k蓝光是什么意思(hdr4k和蓝光4k哪个效果好)

  • vivoy93怎么启动语音助手(vivoy93sroot怎么开)

    vivoy93怎么启动语音助手(vivoy93sroot怎么开)

  • 小树pdf广告怎么删除(win10小树pdf广告怎么彻底删除)

    小树pdf广告怎么删除(win10小树pdf广告怎么彻底删除)

  • 飞信为啥登录不了(飞信官网注册以后,在app怎么登陆不上)

    飞信为啥登录不了(飞信官网注册以后,在app怎么登陆不上)

  • macbook怎么清理系统(Macbook怎么清理垃圾)

    macbook怎么清理系统(Macbook怎么清理垃圾)

  • beatsx怎么切换设备

    beatsx怎么切换设备

  • 荣耀智能手环3怎样调时间(荣耀智能手环怎么连接手机)

    荣耀智能手环3怎样调时间(荣耀智能手环怎么连接手机)

  • 电脑怎么备份文件步骤(电脑怎么备份文件到电脑wps网盘)

    电脑怎么备份文件步骤(电脑怎么备份文件到电脑wps网盘)

  • qq音乐可以投屏吗(qq音乐可以投屏到电视上吗)

    qq音乐可以投屏吗(qq音乐可以投屏到电视上吗)

  • mac系统菜单栏的表情符号怎么去掉? mac菜单栏图标管理技巧(mac菜单栏如何调整位置)

    mac系统菜单栏的表情符号怎么去掉? mac菜单栏图标管理技巧(mac菜单栏如何调整位置)

  • 劳务公司为一般纳税人的税率
  • 捐赠劳务支出可在企业所得税前扣除吗
  • 委托加工物资贷方
  • 当月增值税为负数
  • 小规模纳税人可以开1%的专票吗
  • 网上报税超过了时间还能报吗
  • 股东费用如何入账
  • 新企业会计准则什么时候实施的
  • 对外投资所得税计算公式
  • 股权转让与增资扩股的税务
  • 赠送电影票的说辞
  • 自制半成品具体如何处理账务?
  • 建筑业的合理避税
  • 红字发票信息表是销方还是购方开
  • 税控盘减免在哪里填报
  • 公司资产重组流程
  • 利润分配的余额
  • 固定资产报废处理流程图
  • 软件开发增值税即征即退2022
  • 厂家质量问题商家有责任吗
  • windows全部禁用
  • 认缴出资额和实缴出资额的时间
  • linux系统中怎么创建目录
  • 三方转账协议应该怎么写
  • 财务费用明细科目有哪些
  • 资产证券化会计信息披露规范
  • 企业购入软件会计分录
  • 银行进账单和现金缴款单的区别
  • 酒店装修的整个流程图
  • php实现上传图片功能
  • vue+
  • 担保损失怎么处理好
  • 财务费用明细科目怎么写
  • 企业所得税合理方法包括
  • mavon-editor的使用
  • hive dt
  • vue清空form数据再重新赋值
  • 猿创部落是干什么的
  • php依赖注入的三种方式
  • php二分查找算法两种方法
  • sed指令可以打印文件的奇数或偶数行
  • 小型微利企业如何进行税收筹划
  • wordpress 批量添加标签
  • 如何升级智慧中小学app
  • sql serverjdbc
  • 微信平台的收入从哪里来
  • 有哪些业务可以和公交公司合作的
  • 出租车发票可以重新打印吗
  • 金融资产减值包括
  • 初级职称需要提交什么资料
  • 公转私户违法吗
  • 固定资产累计折旧计算公式
  • 社保的账务处理分录
  • 法人买社保又不发工资怎么做账
  • 餐饮税务每个月多少钱
  • 企业净利润流量怎么算
  • 销项税和进项税计算公式
  • 融资租入固定资产改建支出计入
  • 固定资产清理如何做账
  • 商场联营扣点缴纳增值税税率
  • 银行回单模板
  • 纳税人购进国内商品
  • 生育津贴与员工有关吗
  • 开了票收不到钱怎么做账
  • 成本暂估入帐如何做分录
  • mysql oracle和sqlserver分页查询实例解析
  • win2003和2003r2
  • Mac怎么强制关闭窗口
  • w10简易版
  • Win7旗舰版系统镜像文件
  • kill命令用法
  • [置顶]马粥街残酷史
  • Android游戏开发案例教程小小弹球
  • 安卓开发框架mvvm
  • python3.9快捷键
  • 国家税务总局全国增值税发票官网
  • 个人所得税代扣代缴手续费返还政策
  • 盐城城南新区的邮政编码是多少号
  • 南通买房首付规定
  • 个人股权转让是否增值了怎么判断
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设