Nodejs+expressネットワーク画像を取得し、ローカルを保存

5160 ワード

Nodejs+expressネットワーク画像を取得し、ローカルを保存
使用するnodeテンプレートおよび依存レポート
  • express
  • superagent---superagentは軽量で漸進的なajax apiであり、可読性がよく、学習曲線が低く、内部依存nodejs原生の要求apiであり、nodejs環境下に適用する.
  • superagent-charsetの役割:nodejs superagentを使用してウェブサイトの内容の中国語の文字化けし
  • を這い出す
  • cheerio node版jquery用法同jquery
  • fs node内蔵テンプレートローカル
  • に画像を保存するために使用
    プロジェクトの作成
  • ディレクトリmkdir reptile
  • を作成
  • cd reptile
  • npm initはpackageを生成する.json
  • npm i express superagent superagent-charset cheerio --save

  • 導入モジュール
      const express = require('express');
      const superagent = require('superagent');
      const charset = require('superagent-charset');
      const cheerio = require('cheerio');
      const fs = require('fs');
    

    もし私たちがwww.nanrentuを登るなら.cc/sgtp/リンクの画像はまずこのページの構造を分析します
    リストの画像はすべてli内のimgラベルの中でcheerioを通じて私達は要素を得ることができます
    $('.wrap .h-sgtp-list .h-sgtp-box-m .h-piclist li')
    

    次はソースを直接見ます
    const express = require('express');
    
    const superagent = require('superagent');
    
    const charset = require('superagent-charset');
    
    const cheerio = require('cheerio');
    
    const fs = require('fs');
    
    charset(superagent);
    
    //      https://www.nanrentu.cc/sgtp/
    
    const baseUrl = 'https://www.nanrentu.cc/sgtp/';
    
    const app = express();
    
    app.get('/', (req, res) => {
     //     
     res.header("Access-Control-Allow-Origin", "*");
     res.header('Access-Control-Allow-Methods', 'PUT, GET, POST, DELETE, OPTIONS');
     res.header("Access-Control-Allow-Headers", "X-Requested-With");
     res.header('Access-Control-Allow-Headers', 'Content-Type');
    
     superagent.get(baseUrl)
       .charset('utf-8')
       .end((err, data) => {
         if (err) {
           console.log(`    :${err}`);
           res.json({ code: 400, msg: err });
           return;
         }
         const $ = cheerio.load(data.text);
         const item = [];
         $('.wrap .h-sgtp-list .h-sgtp-box-m .h-piclist li').each((index, element) => {
           const $dom = $(element).find('img');
           const imgSrc = $dom.attr('src');
           item.push({
             imgSrc: imgSrc
           })
           superagent.get(imgSrc).pipe(fs.createWriteStream(`./image/${index}.png`));
         })
    
         res.json({ code: 200, data: item });
    
    
       })
    })
    
    
    app.listen(3333, () => {
     console.log('    :localhost:3333');
    })
    

    これで私たちは多くのイケメンの画像を私たちの現在のプロジェクトディレクトリのイメージフォルダの下に登りました.