學(xué)習(xí)【node.js】也有幾天時(shí)間了,所以打算寫(xiě)著練練手;索然我作為一個(gè)后端的選手,寫(xiě)起來(lái)還有那么一絲熟悉的感覺(jué)。emmm~~ ‘貨'不多講 ,開(kāi)搞........
成都創(chuàng)新互聯(lián)是專業(yè)的紫陽(yáng)網(wǎng)站建設(shè)公司,紫陽(yáng)接單;提供網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行紫陽(yáng)網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!
首先是依賴選擇:
代碼塊如下:
//引入依賴 //https請(qǐng)求 const https = require('https'); //簡(jiǎn)稱node版的jquery const cheerio = require('cheerio'); //解決防止出現(xiàn)亂碼 const iconv = require('iconv-lite') //http請(qǐng)求 const request = require("request"); //負(fù)責(zé)讀寫(xiě)文件 const fs = require('fs'); //處理文件路徑 const path = require('path');
爬取路徑:
代碼塊:(PS:這里單獨(dú)拿出來(lái)是因?yàn)檫@個(gè)站的素材比較推薦,可以上去瞅瞅~~)
const url = 'https://unsplash.com/';
初步實(shí)現(xiàn):
網(wǎng)站的基本構(gòu)成
這里主要是我們直接確認(rèn)一下需要的【img】標(biāo)簽,以及外面的【figure】,然后直接就可以開(kāi)工了....
核心代碼:
//方法對(duì)象 const util = { getsrc: function (url) { https.get(url, res => { const chunks = []; res.on('data', chunk => { // chunks里面存儲(chǔ)著網(wǎng)頁(yè)的html內(nèi)容 chunks.push(chunk); }); res.on('end', e => { let ALL = []; //編碼格式 let html = iconv.decode(Buffer.concat(chunks), 'utf8'); let $ = cheerio.load(html, { decodeEntities: false }); //標(biāo)簽遍歷 $("figure img").each(function (idex, elent) { let $elent = $(elent); let $srcset = $elent.attr("srcset"); if ($srcset != undefined) { let src = ($srcset.split(',').pop()).split('?')[0]; ALL.push({ src: src }) } }); //遍歷數(shù)組 每個(gè)后面加.jpg ALL.forEach(item => { util.downloadimg(item.src, path.basename(item.src) + ".jpg", function () { console.log(path.basename(item.src) + ".jpg"); }); }) }); res.on('error', e => { console.log('Error: ' + e.message); }); }); }, //運(yùn)行主函數(shù) main: function () { console.log("------start--------"); util.getsrc(url); }, //下載圖片函數(shù) downloadimg: function (src, srcname, callback) { //http請(qǐng)求 request.head(src, function (err, res, body) { if (err) { console.log('err:' + err); return false; } console.log('res: ' + res); //保存數(shù)據(jù),這里是防止未來(lái)得及記錄數(shù)據(jù)又開(kāi)始讀取數(shù)據(jù)而導(dǎo)致數(shù)據(jù)丟失 request(src).pipe(fs.createWriteStream('./img/' + srcname)).on('close', callback); }); } } //主函數(shù) util.main();
然后就可以運(yùn)行 node xxx.js 看運(yùn)行結(jié)果。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。
分享題目:Node.js實(shí)現(xiàn)簡(jiǎn)單的爬取的示例代碼
文章來(lái)源:http://jinyejixie.com/article30/pshopo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護(hù)、軟件開(kāi)發(fā)、網(wǎng)站導(dǎo)航、建站公司、、App設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)