国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > JS > 正文

Node.js實現簡單的爬取的示例代碼

2024-05-06 16:52:44
字體:
來源:轉載
供稿:網友

學習【node.js】也有幾天時間了,所以打算寫著練練手;索然我作為一個后端的選手,寫起來還有那么一絲熟悉的感覺。emmm~~ ‘貨'不多講 ,開搞........

首先是依賴選擇:

Node.js,爬取,代碼

代碼塊如下:

//引入依賴//https請求const https = require('https');//簡稱node版的jqueryconst cheerio = require('cheerio');//解決防止出現亂碼const iconv = require('iconv-lite')//http請求const request = require("request");//負責讀寫文件const fs = require('fs');//處理文件路徑const path = require('path');

爬取路徑:

Node.js,爬取,代碼

代碼塊:(PS:這里單獨拿出來是因為這個站的素材比較推薦,可以上去瞅瞅~~)

const url = 'https://unsplash.com/';

初步實現:

網站的基本構成

Node.js,爬取,代碼

這里主要是我們直接確認一下需要的【img】標簽,以及外面的【figure】,然后直接就可以開工了....

核心代碼:

//方法對象const util = {   getsrc: function (url) {    https.get(url, res => {      const chunks = [];      res.on('data', chunk => {        // chunks里面存儲著網頁的html內容        chunks.push(chunk);      });      res.on('end', e => {         let ALL = [];        //編碼格式        let html = iconv.decode(Buffer.concat(chunks), 'utf8');        let $ = cheerio.load(html, { decodeEntities: false });         //標簽遍歷        $("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            })          }        });        //遍歷數組 每個后面加.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);      });    });  },   //運行主函數  main: function () {    console.log("------start--------");    util.getsrc(url);  },  //下載圖片函數  downloadimg: function (src, srcname, callback) {     //http請求    request.head(src, function (err, res, body) {      if (err) {        console.log('err:' + err);        return false;      }      console.log('res: ' + res);      //保存數據,這里是防止未來得及記錄數據又開始讀取數據而導致數據丟失      request(src).pipe(fs.createWriteStream('./img/' + srcname)).on('close', callback);    });  }} //主函數util.main();

然后就可以運行 node xxx.js 看運行結果。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 东海县| 盐津县| 吉隆县| 河东区| 繁昌县| 昔阳县| 腾冲县| 金山区| 涿州市| 巴林左旗| 乳源| 灌阳县| 台东县| 永修县| 武功县| 融水| 古田县| 清新县| 潮州市| 巴中市| 绥宁县| 宜城市| 资兴市| 柘荣县| 中超| 吴江市| 凤山市| 运城市| 霞浦县| 新田县| 和政县| 海阳市| 玛多县| 布尔津县| 龙井市| 蕉岭县| 新巴尔虎右旗| 安国市| 南城县| 合阳县| 额尔古纳市|