javascript - nodejs中使用request库怎么抓取网页中的图片
问题描述
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}`);
我把request 和 writefile 都写成了promise的形式,抓取html是可以的,抓取图片就不行了
一开始data 输出是string类型,也就是request 的body是string类型,我就使用Buffer.from
转为buffer类型,也是不行,改为Buffer.from(data, ’base64’)也是不行,但就是使用 request(url).pipe(fs.createWriteStream(filepath))就可以请问一下哪里出错了
问题解答
回答1:/q/10...
相关文章:
1. html5 - vue-cli 装好了 新建项目的好了,找不到项目是怎么回事?2. javascript - jQuery post()方法,里面的请求串可以转换为GBK编码么?可以的话怎样转换?3. javascript - 一排三个框,各个框的间距是15px,距离外面的白框间距也是15px,这个css怎么写?4. django - python 2层文件夹导入5. javascript - vue 手机端项目在进入主页后 在进入子页面,直接按返回出现空白情况6. javascript - nodejs调用qiniu的第三方资源抓取,返回401 bad token,为什么7. mysql - C#连接数据库时一直这一句出问题int i = cmd.ExecuteNonQuery();8. css - ul ol前边的标记如何调整样式呢9. python - 用urllib抓取网页上的下载链接,目标文件是xls形式,但发现抓下来的xls是空表,里面只有一句报错信息,求帮助。10. python3.x - python 中的maketrans在utf-8文件中该怎么使用

网公网安备