美文网首页
网络爬虫实现批量下载图片

网络爬虫实现批量下载图片

作者: leleo | 来源:发表于2019-08-21 23:33 被阅读0次

需求:
用nodejs编写代码实现下载某个网站单页面的所有图片

开发思路:

  1. 使用HTTP模块发起请求,获取到响应的数据
  2. 分析html数据,提取所有的图片地址
  3. 根据图片地址再次发起请求,获取图片文件保存到硬盘中
const https = require('https');
const fs = require('fs');
const path = require('path');
const xxx = '需要扒的资源路径';
// 使用HTTP模块发起请求,获取到响应的数据
https.get('xxx', (res) => {

    // 定义变量接收数据
    const content = '';

    //防止中文乱码
    res.setEncoding('utf-8'); 

    // 通过响应对象,得到HTML数据
    res.on('data', (str) => {
        content += str;
    })

    // 数据接收完毕
    res.on('end', () => {
        // 分析content数据,提取所有的图片地址
        // 正则匹配图片
        const reg = /src="(.*?\.jpg)"/img;
        const filename;
        // 遍历
        while(filename = reg.exec(content)){
            // 下载图片函数
            getImage(filename[1]);
        }
    })
});

function getImage(url){
    // 图片在保存时,需要文件名,先获取文件名
    const obj = path.parse(url);
    const fn = obj.base;
    const streamImg = fs.createWriteStream('./img/'+ fn);

    // 兼容网站没有根目录的情况
    if(obj.root.length === 0){
        url = '/'+url;
    }

    // 拼接成一个完整的图片url
    url = 'xxx'+url;

    // 向服务器发送请求,获取图片
    https.get(url,(res) => {
        res.pipe(streamImg);
    })
}

相关文章

网友评论

      本文标题:网络爬虫实现批量下载图片

      本文链接:https://www.haomeiwen.com/subject/zjwxsctx.html