爬虫实例

爬虫——cheerio


安装cheerio

  • npm install -g cheerio
  • npm install -g cheerio --save-dev

编写爬虫代码

spider.js

var http = require('http');
var cheerio = require('cheerio');
var url = 'http://www.imooc.com/learn/51';  //本实例是爬一个慕课网课程列表

//过滤文本内容
function filterChapters(html){
  var $ = cheerio.load(html);
  var chapters = $('.chapter');
  var courseData = [];
  chapters.each(function(item){
       var chapter = $(this);
       var chapterTitle = chapter.find('strong').contents().filter(function() { return this.nodeType === 3; }).text().trim(); 
       var videos = chapter.find('.video').children('li');
       var chapterData = {
        chapterTitle: chapterTitle,
        videos: []
       }

       videos.each(function(item){
          var video = $(this).find('.J-media-item');
          var temp=video.text().trim();
          var arr = temp.split('\n'); // 多层标签的文本都拼到一起了,要拆开,取用需要的值
          var videoTitle = arr[0].trim() + ' ' +arr[1].trim();
          var id=video.attr('href').split('video/')[1].trim();
          chapterData.videos.push({
            title: videoTitle,
            id: id
          })
   })
    courseData.push(chapterData)   
})
  return courseData;
}
//打印爬虫结果
function printCourseInfo(courseData){
    courseData.forEach(function(item){
        var chapterTitle = item.chapterTitle;
        console.log(chapterTitle+'\n'+'\n');
        item.videos.forEach(function (video) {
            console.log('   【' + video.id + '】 ' + video.title.trim() +'\n');
        })
    })
}

//获取网站文本内容
http.get(url, function(res){
    var html = '';
    res.on('data', function(data){
        html += data;
    })
    res.on('end', function(){
        var courseData = filterChapters(html);
        printCourseInfo(courseData);
    })
}).on('error', function(){
    console.log('出现错误!');
})

运行爬虫代

  • 打开node命令行Node.js command prompt或者git bash
  • 执行命令node spider.js,即可看到爬虫结果

上码不上图,菊花万人捅

  • 运行结果图

759421-20170107195927347-469128528.png

git bash乱码问题

转载于:https://www.cnblogs.com/scale/p/6260216.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值