基于node的简单爬虫

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于node的简单爬虫相关的知识,希望对你有一定的参考价值。

直接上代码了,就是这么直接…………

还得一定要150字才能发布到首页……

use strict;

//引入模块
var https=require(https);
var fs=require(fs);
var path=require(path);
var cheerio=require(cheerio);

//爬虫的url信息
var getUrl=[/top250,/top250?start=25&filter=,/top250?start=50&filter=,/top250?start=75&filter=,/top250?start=100&filter=,/top250?start=125&filter=,/top250?start=150&filter=,/top250?start=175&filter=,/top250?start=200&filter=];

for(var i=0;i<getUrl.length;i++){
    var opt={
        hostname:movie.douban.com,
        path:getUrl[i],
        port:443
    };
    //创建http get请求
    https.get(opt,function(res){
        var html=‘‘;  //保存抓取到的html源码
        var movies=[]; //保存解析html后的数据,即我们需要的电影信息
        res.setEncoding(utf-8); //设置编码

        //抓取页面内容
        res.on(data,function(chunk){
            html+=chunk;
        });

        res.on(end,function(){
            var $=cheerio.load(html);
            $(".item").each(function(){
                var movie={
                    title:$(.title,this).text(), //获取电影名称
                    star:$(.star .rating_num,this).text(), //获取电影评分
                    link:$(a,this).attr(href), //获取电影详情页链接
                    picUrl:$(.pic img,this).attr(src)
                };

                movies.push(movie);

                //下载图片
                downloadImg(img/,movie.picUrl);

            });

            //保存数据
            saveData(data/data.json,movies);

            console.log(movies);

        });


    }).on(error,function(err){
        console.log(err);
    });
}

//保存数据到本地
function saveData(path,movies){
    fs.writeFile(path,JSON.stringify(movies,null,4),function(err){
        if(err){
            return console.log(err);
        }
        console.log(data saved);
    })
}

//下载图片
function downloadImg(imgDir,url){
    https.get(url,function(res){
        var data=‘‘;
        res.setEncoding(binary);
        res.on(data,function(chunk){
            data+=chunk;
        });

        res.on(end,function(){
            fs.writeFile(imgDir+path.basename(url),data,binary,function(err){
                if(err){
                    return console.log(err);
                }
                console.log(image downloaded:,path.basename(url));
            })

        })

    }).on(error,function(err){

        console.log(err);

    })

}

 

以上是关于基于node的简单爬虫的主要内容,如果未能解决你的问题,请参考以下文章

基于Node.js的裁判文书网爬虫分析

基于 TypeScript/Node 从 0 到 1 搭建一款爬虫工具

基于Nodejs的爬虫

node.js网络爬虫之初识,技术诱惑。

基于Node.js的强大爬虫 能直接发布抓取的文章哦

Node.js(十三)——Promise重构爬虫代码