<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
開發一個小爬蟲,涉及的知識點如下所示:
cheerio是為伺服器特別客製化的,快速、靈活、實施的jQuery核心實現。主要用於在伺服器端解析html。特點如下所示:
首先在命令列,切換到程式目錄,然後輸入安裝命令進行安裝,如下所示:
cnpm install cheerio
安裝過程,如下所示:
在編寫爬蟲之前,首先需要分析目標內容,本次需要爬取的是某網站,星空型別的圖片內容,經過分析,發現所有的圖片都是在ul下每一個li中的a標籤內的img中,本次只需要解析出img的src屬性,即可獲取圖片的下載路徑。如下所示:
經過以上分析,通過Node.js編寫程式碼,分為兩步,獲取所有圖片的url路徑,即解析所有目標img元素的src屬性。然後再下載具體圖片進行儲存即可。
參照所需要的功能模組,如下所示:
var https = require('https'); var cheerio = require('cheerio'); var fs = require('fs');
獲取並解析html頁面內容,如下所示:
//爬取的網址 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']; var logger = fs.createWriteStream('./download/log.txt',{flags:'a+',autoClose:'true'}); for(i in addrs){ (function(num){ var addr = addrs[num]; //建立目錄 var p1 = new Promise(function(resolve,reject){ fs.access('./download',function(err){ if(err){ fs.mkdir('./download',function(e){ if(e){ console.log('建立失敗'); } }); }else{ resolve("success"); } }); }); p1.then(function(datas){ var html=''; var p2 = new Promise(function(resolve,reject){ https.get(addr,function(res){ res.on('data',function(data){ html+=data.toString(); }) res.on('end',function(){ resolve("success"); }); }); }); p2.then(function(data){ //下載完成後,進行解析 const $ =cheerio.load(html); var lis = $('#img-list-outer').find('li'); for(var j=0;j<lis.length-1;j++){ var li = lis[j]; var src =$(li).find('a').find('img').attr('src'); //console.log(src); //console.log('-------------------------'); var imgurl='https:'+src; download(imgurl); var msg='['+j+']下載成功:'+imgurl; logger.write(msg+'n'); console.log(msg); } }); }); })(i); }
注意:因為所有爬取的目標共分為3頁,所以用到了迴圈,並且在迴圈中用到了閉包。
下載並儲存單張圖片程式碼,如下所示:
//下載圖片 function download(imgurl){ var p1 = new Promise(function(resolve,reject){ https.get(imgurl,function(res){ var imgName=imgurl.substr(imgurl.lastIndexOf('/')+1); var stream = fs.createWriteStream('./download/'+imgName); res.pipe(stream); setTimeout(function(){ resolve('success'); },300); }); }); p1.then(function(data){ return; }); }
開發完成後,執行程式碼,如下所示
爬取的圖片,儲存在資料夾中,如下所示:
注意:新增紀錄檔,是為了方便記錄程式執行過程,對比圖片和紀錄檔,便於發現問題。
到此這篇關於Node.js實現爬取網站圖片的範例程式碼的文章就介紹到這了,更多相關Node.js爬取圖片內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45