爬虫目标:获取http://www.imooc.com/learn/348网页中的章节标题和视频信息。

var http = require('http');
var cheerio = require('cheerio');
var url = 'http://www.imooc.com/learn/348'; //获得html后,取得章节标题和视频信息
function filterChapters(html) {
var $ = cheerio.load(html);
var chapters = $('.chapter');
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('.studyvideo');
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');
});
});
}; //获取html文件内容
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('error!!');
});

node.js 小爬虫 imooc 2016.03.06的更多相关文章

  1. 用Node.js写爬虫,撸羞羞的图片

    说到爬虫,很多人都认为是很高大上的东西.哇塞,是不是可以爬妹纸图啊,是不是可以爬小片片啊.答案就是对的.爬虫可以完成这些东西的操作.但是,作为一个正直的程序员,我们要在法律允许范围内用爬虫来为我们服务 ...

  2. node.js+mongodb 爬虫

    demo截图: 本demo爬瓜子二手车北京区的数据 (注:需要略懂 node.js / mongodb 不懂也没关系 因为我也不懂啊~~~) 之所以选择爬瓜子二手车网站有两点: 一.网站无需登录,少做 ...

  3. Node.js 网页爬虫再进阶,cheerio助力

    任务还是读取博文标题. 读取app2.js // 内置http模块,提供了http服务器和客户端功能 var http=require("http"); // cheerio模块, ...

  4. node.js小工具--修改Xcode 'Create by'作者名称

    简介 用Xcode创建源文件时会自动在文件开始位置加入如下注释: // // ISSImageCycleScrollView.m // SoftTravel // // Created by iss1 ...

  5. 基于node.js制作爬虫教程

    前言:最近想学习node.js,突然在网上看到基于node的爬虫制作教程,所以简单学习了一下,把这篇文章分享给同样初学node.js的朋友. 目标:爬取 http://tweixin.yueyishu ...

  6. node.js(小案例)_实现学生信息增删改

    一.前言 本节内容主要对小案例做一个总结: 1.如何开始搭建小项目 2.路由设计 3.模块应用 4.项目源码以及实现过程github地址: 项目演示如下: 二.主要内容 1.项目的关键性js源码: 项 ...

  7. 基于Node.js的爬虫工具 – Node Crawler

    Node Crawler的目标是成为最好的node.js爬虫工具,目前已经停止维护. 我们来抓取光合新知博客tech栏目中的文章信息.访问http://dev.guanghe.tv/category/ ...

  8. Node.js 使用爬虫批量下载网络图片到本地

    图片网站往往广告众多,用Node.js写个爬虫下载图片,代码不长,省事不少,比手动一张张保存简直是天与地的区别.以前用Java也做过远程图片下载,但Node.js的下载速度更让人咂舌,这也是非阻塞式变 ...

  9. Node.js小Httpserver

    须要说明两点: 1 程序文件hello.js需用记事本另存为utf-8格式的hello.js watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvamVhcGVk ...

随机推荐

  1. 微软的无限存储空间-OneDrive

    10 月 28 日消息,微软今天宣布为所有 Office 365 的用户提供无上限的云存储服务,也就是 OneDrive 存储空间将从目前的 1TB 变成无上限,而且无需支付额外费用.这意味着曾经困扰 ...

  2. Could not load db driver class: com.mysql.jdbc.Driver解决方法

    14/03/26 22:43:24 ERROR sqoop.Sqoop: Got exception running Sqoop: java.lang.RuntimeException: Could ...

  3. obj-c 名词

    类:     Class (description/template for an object)实例: Instance (manifestation of a class)消息: Message ...

  4. 局域网内Linux服务器时间同步

    局域网内Linux服务器时间同步   1.将一台能够上网的服务器作为时间服务器:  # /usr/bin/rdate -s time-b.timefreq.bldrdoc.gov //将时间服务器与互 ...

  5. poj 2942--Knights of the Round Table (点的双连通分量)

    做这题简直是一种折磨... 有n个骑士,骑士之间相互憎恨.给出骑士的相互憎恨的关系. 骑士要去开会,围成一圈坐,相互憎恨的骑士不能相邻.开会骑士的个数不能小于三个人.求有多少个骑士不能开会. 注意:会 ...

  6. 安装 Linux 与 Windows 10 双系统,你需要了解的一切

    该选Windows 10还是Linux Mint?鱼与熊掌当然可以兼得,但咱们得掌握点小技巧才能顺利搞定. Windows 10绝不是唯一一款值得我们安装在自己计算机之上的免费操作系统.Linux只靠 ...

  7. 问题-delphi 调试(F8)错行处理

    在delphi 7中(其他版本也可能碰到该问题),编译后,代码左边显示蓝色小点,表示哪句代 码是被编译了的,可今天我的一些代码不能显示那些蓝点了,这样也就不能在上面设断点了,而且用F8跟踪发现执行的顺 ...

  8. 数值类对象:NSNumber,NSValue,NSNull

    基本,集合,复杂,对象 可用对象封装基本数值,然后将对象放入NSArray或NSDictionary 中. 用对象封装基本数值后,即可给其发送消息. 数值类型包括:NSNumber,NSValue,N ...

  9. WinForm Excel导入

     主要代码如下: 定义一个DataSet   存放Excel读取的数据 /// <summary> /// Excel 表中读取的数据 /// </summary> publi ...

  10. Microsoft.Net中数字签名技术

    概 述:本文以Microsoft.Net中创建签名的CAB文件为例,说明如何创建签名文件,从而使你的代码能够安全的在INTERNET上公布.希望能起到抛转引玉的作用. keyword:数字签名,Act ...