代码:

 var http = require("http");

 var cheerio = require("cheerio");

 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(){
var courseData = filterChapters(html); printCourseInfo(courseData);
console.log(courseData);
});
}).on('error', function(){
console.log("获取课程数据出错!");
}); function filterChapters(html)
{
var $ = cheerio.load(html); //所有章节
var chapters = $('.chapter'); var courseData = []; chapters.each(function(item){
var chapter = $(this);
var chapterTitle = chapter.find('h3 strong').text().replace(/\r|\n/ig,"").trim();
var videos = chapter.find(".video").children('li'); var chapterData = {
chapterTitle: chapterTitle,
videos: []
}; videos.each(function(index, item2) {
var video = $(this).find('.J-media-item');
var videoTitle = video.text().replace(/\r|\n/ig,"").trim();
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);
});
});
}

运行:

----------------------------------------------------------------------

参考链接:

nodejs .http模块, cheerio模块 实现 小爬虫.的更多相关文章

  1. nodejs cheerio模块提取html页面内容

    nodejs cheerio模块提取html页面内容 1. nodejs cheerio模块提取html页面内容 1.1. 找到目标元素 1.2. 美化文本输出 1.3. 提取答案文本 1.4. 最终 ...

  2. node--http小爬虫&事件模块

    //http小爬虫 var http=require('http') var cheerio=require('cheerio') var url='http://www.imooc.com/lear ...

  3. 今天用node的cheerio模块做了个某乎的爬虫

        一时兴起,想做个爬虫,经过各种深思熟虑,最后选择了某乎,毕竟现在某乎的数据质量还是挺高的.说干就干 打开某乎首页,随便搜索了一串关键字,相关的问题和答案就展现在眼前,我就思考怎么把这些搜索结果 ...

  4. pandas模块实现小爬虫功能-转载

    pandas模块实现小爬虫功能 安装 pip3 install pandas 爬虫代码 import pandas as pd df = pd.read_html("http://www.a ...

  5. 用Python 3写的一个Spider小爬虫(使用内置urllib模块and正则表达式)

    用Python写了一个Spider小爬虫,爬一爬斗鱼“王者荣耀”在线直播的主播及人气

  6. Nodejs - 如何用 eventproxy 模块控制并发

    本文目标 本文的目标是获取 ZOJ 1001-1010 每道题 best solution 的作者 id,取得数据后一次性输出在控制台. 前文 如何用 Nodejs 分析一个简单页面 我们讲了如何用 ...

  7. nodejs http小爬虫

    本课程用nodejs写一个http小爬虫,首先科普一下,爬虫就是把网上的网页代码给弄下来,然后纳为己用.目前最大的爬虫:百度快照等的. 下面直接上代码 示例一: var http = require( ...

  8. 大熊君大话NodeJS之------Connect中间件模块(第一季)

    一,开篇分析 截止到今天来说,NodeJS系列文章已经有将近十篇了,让我们回顾一下: (1),大熊君大话NodeJS之开篇------Why NodeJS(将Javascript进行到底) (2),大 ...

  9. nodejs安装及npm模块插件安装路径配置

    在学习完js后,我们就要进入nodejs的学习,因此就必须配置nodejs和npm的属性了. 我相信,个别人在安装时会遇到这样那样的问题,看着同学都已装好,难免会焦虑起来.于是就开始上网查找解决方案, ...

随机推荐

  1. DRF之简介以及序列化操作

    1. Web应用模式. 在开发Web应用中,有两种应用模式: 前后端不分离 2.前后端分离 2. api接口 为了在团队内部形成共识.防止个人习惯差异引起的混乱,我们需要找到一种大家都觉得很好的接口实 ...

  2. Matlab-4:追赶法(crout分解)工具箱

    function x=chase (a,b,c,f) % the method of chaase******************************* % a, b, c,分别是是方程组的下 ...

  3. Notes for 'Making elephants fly'

    1. 技术陷阱:应是需求导向, 而不是技术导向. 2. 时机最重要:而不是创造力,团队,客户,产品,或技术. 3. 模仿:能模仿就模仿,不能模仿就创新.巧匠摹形,大师窃意. good artists ...

  4. redis初认知(持续更新中)

    一:redis是什么? 1).redis是一个基于内存的key-value数据库(存储系统). 2).Redis 是一个高性能的key-value数据库. 3).redis的存储分为内存存储.磁盘存储 ...

  5. win10 将本地项目上传到github (第一次+再次上传)

    推荐网址: https://blog.csdn.net/zamamiro/article/details/70172900 https://blog.csdn.net/qq_15800305/arti ...

  6. snort安装使用教程(CentOS6.5)

    官网:https://www.snort.org/ 官方文档:https://www.snort.org/documents 2.安装 2.1安装依赖 yum install flex bison - ...

  7. 在Linux下面如何查看tomcat已经使用多少线程(Threads)

    先用 ps aux |grep tomcat 查看tomcat的 PID 再用 ps -T -p <PID>|wc -l 查看线程

  8. QPainter绘制特殊线条

    参考资料: https://www.cnblogs.com/Jace-Lee/p/5946342.html 效果图: 代码: void WgtText::paintEvent(QPaintEvent ...

  9. Java数组,导入包,foreach控制循环

    总见流星过,火花转瞬逝.何时见春雨,润物细无声. 导入包,例使用Scanner工具类,需要导入包: import  java.util.Scanner; ************ ********** ...

  10. 使用Redis数据库(2)(三十四)

    除了String类型,实战中我们还经常会在Redis中存储对象,这时候我们就会想是否可以使用类似RedisTemplate<String, User>来初始化并进行操作.但是Spring ...