Maison  >  Questions et réponses  >  le corps du texte

javascript - Comment utiliser la bibliothèque de requêtes dans Nodejs pour capturer des images à partir de pages Web

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é

滿天的星座滿天的星座2655 Il y a quelques jours812

répondre à tous(1)je répondrai

  • 三叔

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

    /q/10...

    répondre
    0
  • Annulerrépondre