nodejs爬虫爬取图片并保存本地

关键点:
  1. 分析请求网址的精简(request / http)
  2. 分析图片地址——正则匹配
  3. fs模块createWriteStream

1、请求网址精简

https://image.baidu.com/search/index?tn=baiduimage&word=网址

2、分析图片地址

http://img5.imgtn.bdimg.com/it/u=2577576757,3841266884&fm=26&gp=0.jpg
http://img3.imgtn.bdimg.com/it/u=3004133359,1252464200&fm=26&gp=0.jpg
http://img4.imgtn.bdimg.com/it/u=3385138246,1740869554&fm=26&gp=0.jpg
http://img0.imgtn.bdimg.com/it/u=2479299018,195912564&fm=26&gp=0.jpg
// http://img数字.imgtn.bdimg.com/it/u= 数字 ,& .jpg
let reg = /https:\/\/img\d+\.imgtn\.bdimg\.com[\/0-9a-z_=,&]+\.(jpg|png|gif)/ig;

3、保存图片至本地

如果request只传入options参数(或者直接传入url)
它返回的是可回流,直接通过pipe API写入到可写流
fs.createWriteStream写入至本地文件夹

const request = require('request');
const path = require('path');
const fs = require('fs');

// 中文编码
let word = encodeURI('新垣结衣')

request({
    method: 'get',
    url: 'https://image.baidu.com/search/index?tn=baiduimage&word=' + word,
    headers: {
        "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36"
    }
}, (err,res, data) => {
    // console.log(data)
    let reg = /https:\/\/img\d+\.imgtn\.bdimg\.com[\/0-9a-z_=,&]+\.(jpg|png|gif)/ig;
    let infoArray = data.match(reg);
    // console.log(infoArray)
    
    // 保存图片
    infoArray.forEach((v, i) => {
        request(v).pipe(fs.createWriteStream(path.join(__dirname, './baiduimg/' + i + '.jpg')));
    });
})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值