Heim  >  Fragen und Antworten  >  Hauptteil

javascript – So verwenden Sie die Anforderungsbibliothek in NodeJS, um Bilder von Webseiten zu erfassen

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

滿天的星座滿天的星座2655 Tage vor815

Antworte allen(1)Ich werde antworten

  • 三叔

    三叔2017-06-17 09:18:39

    /q/10...

    Antwort
    0
  • StornierenAntwort