2016-12-09 11 views
0

私はDiscordボットを作ろうとしています.JSにはこれまでの経験はありません。私はこのウェブサイトから画像をダウンロードして投稿する機能を作っています:http://random.dogNode.jsでウェブサイトから画像を取得する

画像へのリンクが正確に分かっていれば、どこからでも画像をダウンロードできました。ここに私のコードの関連部分です:私はこの要求モジュールhttps://www.npmjs.com/package/requesを使用してい

var download = function(uri, filename, callback){ 

request(uri).pipe(fs.createWriteStream(filename)).on('close', callback);} 

download('http://random.dog/14769-27888-18622.jpg', 'dog.png', 

が、それはそのモジュールで、正確なURLなしで画像を取得することは可能でしょうか?

+1

あなたは[jsdom](HTTPSのようなDOMパーサを使用することができます。 //www.npmjs.com/package/jsdom)を使用して、ページ上のHTMLを解析し、イメージURLを特定します。 – brandonscript

+0

検索キーワードは「web scraper」です。 – OrangeDog

+0

私はちょうどこの場合、ここに残しておきます:[正規表現でhtmlを解析する](:http://stackoverflow.com/a/1732454/3861083):-) –

答えて

0
あなたはこれらの二つのモジュールを必要とし、あなたがdynamicaly URLを取得し、名前と写真をダウンロードすることができ

このrequest-promise, cheerio,

var app = require('express')(); 

    var http = require('http').Server(app); 

fs = require('fs'); 

var fs = require('fs'), 
    request = require('request'); 
//save image 

    var download = function(uri, filename, callback){ 
     request.head(uri, function(err, res, body){ 
    request(uri).pipe(fs.createWriteStream(filename)).on('close', callback); 
    }); 
}; 

//get URL 
var Imgpath=""; 
var rp = require('request-promise'), 
    cheerio = require('cheerio'), 
    url = require('url'), 
    base = 'http://random.dog/'; 

var options = { 
    uri: base, 
    method: 'GET', 
    resolveWithFullResponse: true 
}; 
rp(options) 
    .then (function (response) { 
    $ = cheerio.load(response.body); 
    var relativeLinks = $("img"); 
    relativeLinks.each(function() { 
     var link = $(this).attr('src'); 
     var fullImagePath = url.resolve(base, link); // should be absolute 
    //pass to download to download image link is file name and base is base url 
     download(base+link,link,function() 
       { 
      console.log("wao great we done this...THINK DIFFERENT") 
     }) 
    }); 
}); 
app.listen(3000); 
console.log("server start"); 
app.get('/',function(req,res){ 
    res.sendfile(__dirname + '/a.html'); 
}); 

enter image description here

関連する問題