nodejs .http模块, cheerio模块 实现 小爬虫.

代码:

 1 var http = require("http");
 2
 3 var cheerio = require("cheerio");
 4
 5
 6 var url = ‘http://www.imooc.com/learn/348‘;
 7
 8
 9 http.get(url, function(res){
10     var html = ‘‘;
11
12     res.on(‘data‘, function(data){
13         html += data;
14     });
15
16     res.on(‘end‘, function(){
17         var courseData = filterChapters(html);
18
19         printCourseInfo(courseData);
20         console.log(courseData);
21     });
22 }).on(‘error‘, function(){
23     console.log("获取课程数据出错!");
24 });
25
26 function filterChapters(html)
27 {
28     var $ = cheerio.load(html);
29
30     //所有章节
31     var chapters = $(‘.chapter‘);
32
33     var courseData = [];
34
35     chapters.each(function(item){
36         var chapter = $(this);
37         var chapterTitle = chapter.find(‘h3 strong‘).text().replace(/\r|\n/ig,"").trim();
38         var videos = chapter.find(".video").children(‘li‘);
39
40         var chapterData = {
41             chapterTitle: chapterTitle,
42             videos: []
43         };
44
45         videos.each(function(index, item2) {
46             var video = $(this).find(‘.J-media-item‘);
47             var videoTitle = video.text().replace(/\r|\n/ig,"").trim();
48             var id = video.attr(‘href‘).split(‘video/‘)[1];
49
50             chapterData.videos.push({
51                 title: videoTitle,
52                 id: id
53             })
54         });
55
56         courseData.push(chapterData);
57     });
58
59     return courseData;
60 }
61
62
63 function printCourseInfo(courseData)
64 {
65     courseData.forEach(function(item){
66         var chapterTitle = item.chapterTitle;
67         console.log(chapterTitle + ‘\n‘);
68
69         item.videos.forEach(function(video){
70             console.log(‘   [‘ + video.id+ ‘]‘ + video.title);
71         });
72     });
73 }

运行:

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

参考链接:

时间: 2024-07-30 10:17:06

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

nodejs cheerio模块提取html页面内容

nodejs cheerio模块提取html页面内容 Table of Contents 1. nodejs cheerio模块提取html页面内容 1.1. 找到目标元素 1.2. 美化文本输出 1.3. 提取答案文本 1.4. 最终代码 本文给出使用一个用cheerio模块提取html文件中指定内容的例子,并说明具体步骤.涉及到的API.以及其它模块. cheerio模块是一个类似jquery的模块,具有相似的API.功能,能够将一个网页解析为DOM,以及通过selector选择元素,设置.

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

//http小爬虫 var http=require('http') var cheerio=require('cheerio') var url='http://www.imooc.com/learn/348' function filter(html){ var $=cheerio.load(html); var chapters=$('.mod-chapters') var courseData=[] chapters.each(function(item){ var chapter=$(

HTTP小爬虫 ,nodejs学习(二)

使用nodejs抓取网页数据,这里用到cheerio,解析html十分好用,和jquery用法完全一致. 首先安装cheerio,在命令行中输入 npm install cheerio;(在nodejs根目录下输入该命令) 安装完成以后,我们来解析慕课网上http://www.imooc.com/learn/348,获取其上的课程信息. 代码如下: var http = require('http'); var cheerio = require('cheerio'); var url = 'h

用NodeJs做一个小爬虫

作者:北京起步科技前端研究员,专注分享HTML5 App快速开发工具 WeX5 的黑魔法以及相应的前端技术. 前言 利用爬虫可以做很多事情,单身汉子们可以用爬虫来收集各种妹子情报,撩妹族们可以用爬虫收集妹子想要的小东西,赚大钱的人可以用来分析微博言论与股票涨跌的关系诸如此类的,简直要上天了. 你们感受一下 点我点我: 蠢蠢欲动 抛开机器学习这种貌似很高大上的数据处理技术,单纯的做一个爬虫获取数据还是非常简单的.对于前段er们来说,生在有nodejs的年代真是不要太幸福了,下面就用nodejs来做

深入浅出nodejs(一) 模块加载机制

声明: 深入浅出nodejs系列文章将会在后面持续更新. 该系列文章部分参考 朴灵<深入浅出nodejs>,并加以总结补充 你真的了解require函数吗? 看似简单的require函数, 其实内部做了大量工作...下面我们将详细说明require为我们所做的一切 nodejs模块加载原理 node加载模块步骤: 1) 路径分析 (如判断是不是核心模块.是绝对路径还是相对路径等) 2) 文件定位 (文件扩展名分析, 目录和包处理等细节) 3) 编译执行 原生模块加载顺序 1) 缓存 2) 本地

[转]nodejs中的process模块--child_process.exec

1.process是一个全局进程,你可以直接通过process变量直接访问它. process实现了EventEmitter接口,exit方法会在当进程退出的时候执行.因为进程退出之后将不再执行事件循环,所有只有那些没有回调函数的代码才会被执行. 在下面例子中,setTimeout里面的语句是没有办法执行到的. 1 process.on('exit', function () { 2 setTimeout(function () { 3 console.log('This will not ru

spring+springmvc+hibernate架构、maven分模块开发样例小项目案例

maven分模块开发样例小项目案例 spring+springmvc+hibernate架构 以用户管理做測试,分dao,sevices,web层,分模块开发測试!因时间关系.仅仅測查询成功.其它的准备在ext上做个完整的案例来的,可惜近期时间非常紧. 高级部分也没做測试,比方建私服,其它经常使用插件測试之类的,等用时间了我做个完整ext前端和maven 完整的样例出来,在分享吧. 只是眼下这些撑握了.在项目中做开发是没有问题的,其它高级部分是架构师所做的. 之前我有的资源都加上了积分,有些博友

介绍nodejs中的path模块的几个方法

webpack中常用的: var path = require('path') 是nodejs中的path模块,介绍一下webpack中常用的几个path模块的方法: 应用node环境的时候,这个path模块的方法经常被用到,处理路径的方法. Nodejs的path模块介绍: 网址:http://nodejs.cn/api/path.html path 模块提供了一些工具函数,用于处理文件与目录的路径.可以通过以下方式使用: const path = require('path'); 或 var

nodejs基础 用http模块 搭建一个简单的web服务器 响应纯文本

首先说一下,我们平时在浏览器上访问网页,所看到的内容,其实是web服务器传过来的,比如我们访问www.baidu.com.当我们在浏览器地址栏输入之后,浏览器会发送请求到web服务器,然后web服务器根据请求所携带的信息,返回内容. 那么,nodejs中的http模块,就是用来搭建web服务器用的. 下面来简单的搭建一个服务器: var http = require("http"); //request:是请求参数,携带这请求所带来的信息.response:是响应参数,携带者将要返回到