美文网首页
2018-07-27 node实例一

2018-07-27 node实例一

作者: 16孙一凡通工 | 来源:发表于2018-07-27 20:47 被阅读0次

    node简单的爬东西

    第一种方式

    1.下载
    npm install http,cheerio --save
    2.初始化url并调用封装函数
    var url = "http://www.baidu.com"; //初始url
    function fetchPage(x) { //封装了一层函数
    startRequest(x);
    }
    fetchPage(url);
    3.读取网页的内容,同时
    var html={};
    res.on('data',function(chunk){
    html+=chunk;
    });//读取操作
    4.调用cheerio,
    将读取的网页buffer内容转换为html代码,
    res.on('end',function(){
    var =cheerio.load(html); ar l=('#u').find('a').html();//这一步是将html代码中提取特定的内容,
    因网页和你想提取的内容不同而不同
    console.log(l);
    //输出了结果
    简单爬取

    第二种方式 进阶篇

    1.下载request,cheerio,fs
    npm install request,cheerio,fs --save
    2.使用request模块读取网页内容
    url = 'http://movie.douban.com/subject/25724854/';
    //这里是举个例子而已,豆瓣的具体的电影网址可以自己替换
    var html = '';
    html = request('GET', url).getBody().toString();
    3.调用cheerio模块分析处理html
    var =cheerio.load('html'); var info =('#info');
    // 获取电影名
    var movieName = ('#content>h1>span').filter(function(i,el){ return(this).attr('property') === 'v:itemreviewed';
    }).text();
    // 获取影片导演名
    var directories = '- 导演:' + ('#info span a').filter(function(i,el){ return(this).attr('rel') === 'v:directedBy';
    }).text();
    // 获取影片演员
    var starsName = '- 主演:';
    ('.actor .attrs a').each(function(i,elem){ starsName +=(this).text() + '/';
    });
    // 获取片长
    var runTime = '- 片长:' + ('#info span').filter(function(i,el){ return(this).attr('property') === 'v:runtime';
    }).text();
    // 获取影片类型
    var kind = ('#info span').filter(function(i,el){ return(this).attr('property') === 'v:genre'
    }).text();
    // 处理影片类型数据
    var kLength = kind.length;
    var kinds = '- 影 片类型:';
    for (i = 0; i < kLength; i += 2){
    kinds += kind.slice(i,i+2) + '/';
    }
    // 获取电影评分和电影评分人数
    // 豆瓣
    var DBScore = ('.ll.rating_num').text(); var DBVotes =('a.rating_people>span').text().replace(/\B(?=(\d{3})+$)/g,',');
    var DB = '- 豆 瓣评分:' + DBScore + '/10' + '(' + 'from' + DBVotes + 'users' + ')';
    var data = movieName + '\r\n' + directories + '\r\n' + starsName + '\r\n' + runTime + '\r\n' + kinds + '\r\n'+ DB +'\r\n';
    4.输出并写入文件
    console.log(data);
    fs.appendFile('dbmovie.txt', data, 'utf-8', function(err){
    if (err) throw err;
    else console.log('大体信息写入成功'+'\r\n' )
    });
    如果要问模块的具体用法,自行百度
    这只是两个小demo 。。。

    相关文章

      网友评论

          本文标题:2018-07-27 node实例一

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