Nodejs小爬虫
Posted Amy鱼
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nodejs小爬虫相关的知识,希望对你有一定的参考价值。
记得先装载http这个模块
打开cmd :npm install http -g
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(‘获取出错‘) })
cmd:node一下,出来网页源码
然后npm install cheerio -g
用慕课网做测试哈哈哈 ,这里要说明一点:代码和课程中是不一样的,因为网站改动了源代码,class之类的名字换掉了,所以之前的爬虫爬不出来的。还好知道原理以后自己去改就可以了。
/** * Created by Amy on 2017/7/13. */ var http= require(‘http‘) var cheerio= require(‘cheerio‘)//先装载这个模块 var url=‘http://www.imooc.com/learn/348‘ function filterChapters(html){ var $=cheerio.load(html) var chapters= $(‘.chapter‘) // [{ // chapterTitle:‘‘, // videos:[ // title:‘‘, // id:‘‘ // ] // }] var courseData=[] 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(‘.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(video){ console.log(‘[‘+video.id+‘]‘+video.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(‘获取出错‘) })
去node一下试试,好神奇吧。
以上是关于Nodejs小爬虫的主要内容,如果未能解决你的问题,请参考以下文章