美文网首页
利用request模块做一个爬取京东产品详情页图片的小案例

利用request模块做一个爬取京东产品详情页图片的小案例

作者: 深漂浪子 | 来源:发表于2019-06-04 17:59 被阅读0次

    准备工作:

    在成功安装了nodejs的前提下,再分别安装好request和cheerio等第三方模块:

    安装request: npm install --save request(个人推荐使用cnpm安装)

    安装cheerio:npm install cheerio

    编写js文件:request.js

    以京东的零食页面为例,每次只需要把页面的url地址复制一遍,然后手动更改下文件夹dir的路径就可以把图片爬取到相应的文件夹内

    //引入核心模块fs文件模块
    const fs = require("fs");
    //引入第三方模块request模块
    const request = require("request");
    //引入第三方模块cheerio模块
    const cheerio = require("cheerio");
    
    const url = "https://item.jd.com/3444503.html";
    
    // 定义将你的图片存入的文件夹
    const dir = "./img/food1";
    
    fs.mkdir(dir,(err)=>{});
    
    let arr = [];
    
    request(url,(err,res,body)=>{
    if(!err && res.statusCode == 200){
    const $ = cheerio.load(body);
    
    //多张小图片路径的爬取:
    
    let imgs = $(".spec-items>.lh>li>img");
    
    for(var i=0;i<imgs.length;i++){
    arr.push(imgs.eq(i).attr("src"));
    }
    //下载并对图片重命名
    for(var i=0;i<arr.length;i++){
        download("https:"+arr[i],dir,Date.now()+"food"+i+arr[i].substr(-4,4));
    }
    
        //单张大图的爬取:
    
        let maxImg = $(".main-img>img");
        var msrc = maxImg.attr("data-origin");
        download("https:"+msrc,dir,Date.now()+"xiaomi_big"+msrc.substr(-4,4));
    }
    })
    
    //封装下载的方法
    //url 图片的真实路径 dir 你要存图片的文件夹名称 filename 你要存图片的文件名称
    let download = (url,dir,filename)=>{
        //下载图片的一种方法
        request.head(url,()=>{
            //当下载成功以后将这个图片通过管道的形式放在./img/你的二级文件夹/filename
            request(url).pipe(fs.createWriteStream(dir+"/"+filename))
        })
    }
    
    

    3、运行文件

    初始化backpage.json包 npm init -y

    安装node_modules文件 npm install

    运行 node request

    此案例需要用到node.js文件

    相关文章

      网友评论

          本文标题:利用request模块做一个爬取京东产品详情页图片的小案例

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