javascript - Cara menggunakan perpustakaan permintaan dalam nodejs untuk menangkap imej dari halaman web
滿天的星座
滿天的星座 2017-06-17 09:16:39
0
1
849
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}`);

Saya menulis kedua-dua permintaan dan menulis fail dalam bentuk janji Ia adalah mungkin untuk menangkap html, tetapi bukan imej

Pada mulanya, output data adalah jenis rentetan, iaitu badan permintaan adalah jenis rentetan, jadi saya menggunakan Buffer.from

Menukar kepada jenis penimbal tidak berfungsi, begitu juga menukarnya kepada Buffer.from(data, 'base64'), tetapi hanya menggunakan request(url).pipe(fs.createWriteStream(filepath)) akan berjaya
Sila beritahu saya apa yang silap

滿天的星座
滿天的星座

membalas semua(1)
三叔

/q/10...

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan