基于Nodejs的第一个小爬虫
来源:互联网 发布:淘宝拍卖商业房产税费 编辑:程序博客网 时间:2024/05/17 09:13
最近跟着慕课网的Scott老师课程写了个小爬虫,爬取当前学习课程的课程列表信息,由于当前该页面的源码修改过了不再是视频中的那个源码了,所以按照老师的代码是爬取不了的,对于爬取修改的这部分就苦搞了一个下午才搞定(毕竟自己学的javascript很渣....)。给我很大惊喜的是使用Nodejs来写爬虫,不再需要用正则表达式这个恶心的东西了来爬取自己想要的数据,使用Nodejs中的cheerio模块(用法和jquery几乎一样)来选择自己需要爬取的标签数据就相当于用javascript中使用jquery来选择当前页面的标签数据,实现起来相当简单;下面直接来看代码:
/** * Created by Turne on 2017/2/10. */var http = require('http');var url = 'http://www.imooc.com/learn/348';//当前需要爬取的url地址var cheerio = require('cheerio');//cheerio模块使用方法几乎和jquery一样function printinfo(coureData) {//打印已经爬好的数据 coureData.forEach(function (item) { console.log(item.chapterTitle + '\n');//打印每一章的标题 item.videos.forEach(function (video) { console.log(' 【' + video.id + '】 '+ video.title + '\n');//打印每个视频的id和小标题 }) })}function selecttHtml(html) {//选择自己需要爬取该页面中的那些数据 var $ = cheerio.load(html);//解析HTML代码 var contents = $('.chapter');//选择类名为chapter的所有标签 var courseData = []; contents.each(function (item) { var content = $(this); var text = content.find('.chapter-content').text(); var chapterTitle = content.find('strong').text().split(text)[0].trim();//当前章节的标题 var videos = content.find('.video').children('li');//所有视频的信息 var chapterData = {//每一章数据保存的对象格式 chapterTitle:chapterTitle, videos: [] }; videos.each(function (item) { var video = $(this).find('a'); var title = video.text().split('开始学习')[0].trim(); //console.log(title.length); title = title.substring(0,title.length - 10).trim() + " " + title.substring(title.length - 10,title.length).trim(); var id = video.attr('href').split('video/')[1]; chapterData.videos.push({ title:title,//每个视频的标题 id:id//每个视频的id }) }) courseData.push(chapterData) }) return courseData;}http.get(url,function(res){//获取url地址的源码 var html = ''; res.on('data',function (data) {//当触发data事件时,就把当前返回的数据保存起来 html += data.toString('utf-8'); }) res.on('end',function(){//当触发end事件时,即响应已结束,即整个源码都已获取成功了 //console.log(html); var courseData = selecttHtml(html); printinfo(courseData); })})
0 0
- 基于Nodejs的第一个小爬虫
- nodejs的第一个小程序
- 第一个小爬虫
- 我的第一个小爬虫
- python的第一个小爬虫requests
- 第一个爬虫小程序
- 第一个爬虫小程序
- 基于Spring的第一个小应用
- 使用beautifulsoup写的第一个小爬虫程序
- 我的第一个小爬虫程序-python
- 轻轻敲开nodeJs的大门--第一个nodeJs入门小程序
- nodejs的第一个程序
- 第一个小爬虫-------下载jpg图片
- Python第一个程序小爬虫
- 纪念第一个scrapy小爬虫
- 利用nodeJS实现的网络小爬虫
- 我的第一个爬虫
- 我的第一个爬虫
- CMD提示不是内部或外部命令怎么办?
- 【数据结构与算法】 DP 动态规划 介绍
- numpy基础运算1
- HDU4497:GCD and LCM(数论)
- 在CentOS7.3下yum安装Kubernetes1.4傻瓜教程
- 基于Nodejs的第一个小爬虫
- 二重价值的最短路
- Numpy 基础运算2
- AChartEngine
- recyclerview中有edittext的处理
- qq1455018613
- IO流_复制单级文件夹案例
- 43200005
- iOS中简单易懂秒杀倒计时/倒计时