AutoCAD 3DMAX C语言 Pro/E UG JAVA编程 PHP编程 Maya动画 Matlab应用 Android
Photoshop Word Excel flash VB编程 VC编程 Coreldraw SolidWorks A Designer Unity3D
 首页 > JavaScript

node.js基础模块http、网页分析工具cherrio实现爬虫

51自学网 http://www.wanshiok.com
node.js基础模块http,网页分析工具cherrio,node.js爬虫

一、前言
      说是爬虫初探,其实并没有用到爬虫相关第三方类库,主要用了node.js基础模块http、网页分析工具cherrio。 使用http直接获取url路径对应网页资源,然后使用cherrio分析。 这里我主要学习过的案例自己敲了一遍,加深理解。在coding的过程中,我第一次把jq获取后的对象直接用forEach遍历,直接报错,是因为jq没有对应的这个方法,只有js数组可以调用。

二、知识点
    ①:superagent抓去网页工具。我暂时未用到。
    ②:cherrio 网页分析工具,你可以理解其为服务端的jQuery,因为语法都一样。
效果图

1、抓取整个网页

 

2、分析后的数据,提供的示例为案例实现的例子。

爬虫初探源码分析

var http=require('http');var cheerio=require('cheerio'); var url='http://www.imooc.com/learn/348'; /****************************打印得到的数据结构[{ chapterTitle:'', videos:[{  title:'',  id:'' }]}]********************************/function printCourseInfo(courseData){ courseData.forEach(function(item){  var chapterTitle=item.chapterTitle;  console.log(chapterTitle+'/n');  item.videos.forEach(function(video){   console.log(' 【'+video.id+'】'+video.title+'/n');  }) });}  /*************分析从网页里抓取到的数据**************/function filterChapter(html){ var courseData=[];  var $=cheerio.load(html); var chapters=$('.chapter'); chapters.each(function(item){  var chapter=$(this);  var chapterTitle=chapter.find('strong').text(); //找到章节标题  var videos=chapter.find('.video').children('li');   var chapterData={   chapterTitle:chapterTitle,   videos:[]  };   videos.each(function(item){   var video=$(this).find('.studyvideo');   var title=video.text();   var id=video.attr('href').split('/video')[1];    chapterData.videos.push({    title:title,    id:id   })  })   courseData.push(chapterData); });  return courseData;} http.get(url,function(res){ var html='';  res.on('data',function(data){  html+=data; })  res.on('end',function(){  var courseData=filterChapter(html);  printCourseInfo(courseData); })}).on('error',function(){ console.log('获取课程数据出错');})

参考资料:
https://github.com/alsotang/node-lessons/tree/master/lesson3

http://www.imooc.com/video/7965


node.js基础模块http,网页分析工具cherrio,node.js爬虫  
上一篇:JavaScript资源预加载组件和滑屏组件的使用推荐  下一篇:ES6中如何使用Set和WeakSet