dayjournal memo

Total 975 articles!!

Node.js #002 – 画像をダウンロード

Yasunori Kirimoto's avatar

Node.jsで任意のWebsite画像をダウンロードしたい場合は下記のように記述します。


script.js


var client = require('cheerio-httpcli');
var URL = require('url');
var request = require('request');
var fs = require('fs');

var Website = "https://day-journal.com/blog/";
var para = {};
var src;
var answer01;
var answer02;
var savedir;
var filename;

    savedir = __dirname + "/img";
    if (!fs.existsSync(savedir)) {
        fs.mkdirSync(savedir);
    }

    client.fetch(Website, para, function(err, $, res) {
        if (err) { console.log("error"); return; }

        $("img").each(function(idx) {
            src = $(this).attr('src');
            answer01 = URL.resolve(Website, src);

            filename = URL.parse(answer01).pathname;
            answer02 = savedir + "/" + filename.replace(/[^a-zA-Z0-9\.]+/g, '_');
            request(answer01).pipe(fs.createWriteStream(answer02));
        });
        console.log("\n" + "画像が出力されました。");
    })

script.jsを実行すると下記のように画像がダウンロードされます。

node.js_002_01


node.js_002_02


ダウンロード処理には手軽に記述できる「request」モジュールを利用します。


非同期ではない状態でカレントディレクトリにimgフォルダを作成:


savedir = __dirname + "/img";
if (!fs.existsSync(savedir)) {
    fs.mkdirSync(savedir);


ダウンロード処理:


filename = URL.parse(answer01).pathname;
answer02 = savedir + "/" + filename.replace(/[^a-zA-Z0-9\.]+/g, '_');
request(answer01).pipe(fs.createWriteStream(answer02))


book

Q&A


  • 参考文献
[![JS+Node.jsによるWebクローラー/ネットエージェント開発テクニック](http://ecx.images-amazon.com/images/I/61DHJGf1uSL._SL160_.jpg)](http://www.amazon.co.jp/exec/obidos/ASIN/4883379930/dayjournal-22/ref=nosim/)
[JS+Node.jsによるWebクローラー/ネットエージェント開発テクニック](http://www.amazon.co.jp/exec/obidos/ASIN/4883379930/dayjournal-22/ref=nosim/)