javascript - Comment utiliser la bibliothèque de requêtes dans Nodejs pour capturer des images à partir de pages Web
滿天的星座
滿天的星座 2017-06-17 09:16:39
0
1
856
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}`);

J'ai écrit à la fois request et writefile sous forme de promesse. Il est possible de capturer du HTML, mais pas des images

.

Au début, la sortie des données est de type chaîne, c'est-à-dire que le corps de la requête est de type chaîne, j'utilise donc Buffer.from

La conversion en type de tampon ne fonctionne pas, ni le changer en Buffer.from(data, 'base64'), mais il suffit d'utiliser request(url).pipe(fs.createWriteStream(filepath))
Veuillez me le dire. qu'est-ce qui n'a pas fonctionné

滿天的星座
滿天的星座

répondre à tous(1)
三叔

/q/10...

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal