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. android - NavigationView 的側滑菜單中如何保存新增項(通過程序添加)2. 老師 我是一個沒有學過php語言的準畢業生 我希望您能幫我一下3. php7.3.4中怎么開啟pdo驅動4. 關于thinkphp 5.1中,ajax提交數據url的格式寫法,加花括號就出錯,請老師指點5. http://run.php.cn/在線PHP程序運行結果不正確6. tp5 不同控制器中的變量調用問題7. Thinkphp5.1報錯不支持Redis8. ueditor上傳服務器提示后端配置項沒有正常加載,求助!!!!!9. 提示語法錯誤語法錯誤: unexpected ’abstract’ (T_ABSTRACT)10. 這段代碼既不提示錯誤也看不到結果,請老師明示錯在哪里,謝謝!
