javascript – So verwenden Sie die Anforderungsbibliothek in NodeJS, um Bilder von Webseiten zu erfassen
滿天的星座
滿天的星座 2017-06-17 09:16:39
0
1
850
const koa = require('koa');
const request = require('request');
const fs = require('fs');
const path = require('path');
function requestAsync(url) {
    return new Promise((resolve, reject) => {
        request({
            url: url
        }, (err, res, body) => {
            if (err) {
                reject(err);
            } else {
                resolve(body);
            }
        })
    });
}
function writeFileAsync(path, data, option) {
    return new Promise((resolve, reject) => {
        fs.writeFile(path, data, option, (err)=> {
            if (err) {
                reject(err);
            } else {
                resolve();
            }
        })
    });
}
const app = new koa();
app.use(async (ctx) => {
    let url = 'http://pubimage.360doc.com/index7/bannerl_1.jpg';
    let filepath = path.join(__dirname, './images/详情');
    filepath = filepath + '/1.jpg';
    // request(url).pipe(fs.createWriteStream(filepath));这个可以正常抓取图片
    let data = await requestAsync(url);
    let buffer = Buffer.from(data);
    await writeFileAsync(filepath, buffer);
    ctx.type = 'jpg';
    ctx.body = buffer;
})
app.listen(3000);
console.log(`starting at ${3000}`);

Ich habe sowohl die Anfrage als auch die Schreibdatei in Form eines Versprechens geschrieben. Es ist möglich, HTML zu erfassen, aber keine Bilder

Am Anfang ist die Datenausgabe vom Typ String, das heißt, der Hauptteil der Anfrage ist vom Typ String, also verwende ich Buffer.from

Die Konvertierung in den Puffertyp funktioniert nicht, ebenso wenig wie die Änderung in Buffer.from(data, 'base64'), aber die Verwendung von request(url).pipe(fs.createWriteStream(filepath)) reicht aus

Bitte sagen Sie es mir Was ist schief gelaufen

滿天的星座
滿天的星座

Antworte allen(1)
三叔

/q/10...

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage