爬蟲:把網頁爬下來(發送http請求,保存返回的結果,通常是html),分析html拿到有用數據。html
拿到http://www.imooc.com/learn/348的源碼【日期20170329】jquery
var http=require('http'); var url='http://www.imooc.com/learn/348'; http.get(url,function(res){ var html=''; res.on('data',function (data){ html+=data; }) res.on('end',function(){ console.log(html); }); }).on('error',function(){ console.log('獲取課程數據出錯'); });
先安裝一個模塊cheerio,cheerio能夠理解成一個 Node.js 版的 jquery。npm
npm install cheerio數組
var http=require('http'); var cheerio=require('cheerio'); var url='http://www.imooc.com/learn/348'; //分析用cheerio模塊 function filterChapters(html){ var $=cheerio.load(html); var chatpers=$('.chapter');//全部章節的數組 /*//指望的數據結構 [{ chapterTitle:'', videos:[ title:'', id:'' ] }]*/ var courseData=[]; chatpers.each(function(item){ var chapter=$(this); var chapterTitle=chapter.find('strong').text(); videos=chapter.find('.video').children('li'); var chapterData={ chapterTitle:chapterTitle, videos:[] }; videos.each(function(item){ var video=$(this).find('.J-media-item'); var videoTitle=video.text(); var id=video.attr('href').split('video/')[1]; 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'); item.videos.forEach(function(item){ console.log('【'+item.id+'】'+item.title+'\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('獲取課程數據出錯'); });
本文做者starof,因知識自己在變化,做者也在不斷學習成長,文章內容也不定時更新,爲避免誤導讀者,方便追根溯源,請諸位轉載註明出處:http://www.cnblogs.com/starof/p/6639505.html有問題歡迎與我討論,共同進步。數據結構