一个简单的网站图片爬取程序

最近学习Node.js,感觉一个爬起网站图像的程序有点意思,记录下来,供以后参考。

程序的运行环境:从官网下载安装Node.js,同时安装好了nmp。

需要两个包:response和cheerio。 一个负责向网站发起请求,获取指定网页,生成DOM, 从而获取图片的链接。

                     一个将获取的图片保存到磁盘。(nmp insall response cheerio下载所需的包)

应用文件夹结构:

img目录存放抓取得图片。node_modules是相关的包:response和cheerrio. 

package.json是npm init命令生成的包信息。

index.js的内容:

const request = require('request');
const path = require('path');
const config = require('./config');
const analyze=require('./analyze');
const fs=require('fs');
function start()
{
    request(config.url,function(err,res,body){
        if(!err && res)
        {
            analyze.findImg(body,downLoad);
        }  else console.log("request error.");
       }
    )
}
function downLoad(imgUrl,i){
    let im=config.url+imgUrl;
    let ext=imgUrl.split('.').pop();
    request(im).pipe(fs.createWriteStream(path.join(config.imgDir,i+'.'+ext),{'encoding':'utf8'}))
    console.log(i);
}
start();

//------------------------config.js------配置文件

config.js

const url='要抓取得网站';   //如:http://www.baidu.com
const path=require('path');
const imgDir=path.join(__dirname,'img');
module.exports.url=url;
module.exports.imgDir=imgDir;

//--------------analyze.js------------分析获取图片链接

const cheerio=require('cheerio');
function findImg(dom,callback){
    let $=cheerio.load(dom);
    $('img').each(function(i,elem){
        let imgSrc=$(this).attr('src');
        console.log(imgSrc);
        callback(imgSrc,i);
    });
}
module.exports.findImg=findImg;

//----------------------------------

以上就是所有的程序:

运行:node  index.js  

就成功获取到图片文件,保存在img目录下。

注:以上内容主要来自于 忽如寄的书  《Node.js开发实战》,稍有改动。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值