javascript - nodejs中使用request庫怎么抓取網(wǎng)頁中的圖片
問題描述
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
轉(zhuǎn)為buffer類型,也是不行,改為Buffer.from(data, ’base64’)也是不行,但就是使用 request(url).pipe(fs.createWriteStream(filepath))就可以請問一下哪里出錯了
問題解答
回答1:/q/10...
相關(guān)文章:
1. html5 - 我引用的是花瓣網(wǎng)上的圖片,在自己電腦上可以正常顯示(狀態(tài)碼200),但在別人電腦上是403forbid,有大神知道是什么嗎?2. javascript - 微信小程序picker為什么會變成兩行?3. objective-c - 同一個APP的微信登錄的微信開發(fā)平臺賬號和微信支付的微信開發(fā)平臺賬號可以是不同一個嗎?4. javascript - 百度echarts series數(shù)據(jù)更新問題5. css3 - [CSS] 動畫效果 3D翻轉(zhuǎn)bug6. html5 - Chrome訪問本地文件緩慢7. flask+vue+webpack使用nginx+uwsgi部署問題8. javascript - 我寫的href跳轉(zhuǎn)地址不是百度,為什么在有的機(jī)型上跳轉(zhuǎn)到百度了,有的機(jī)型跳轉(zhuǎn)正確9. html5 - H5移動端UC瀏覽器的,跳轉(zhuǎn)下一個頁面,下一個頁面input輸入框獲取焦點后,會帶出上一頁的內(nèi)容?10. 在ios下 微信打開iframe鏈接的頁面時 在微信里長按無法識別二維碼
