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é
/q/10...