|   715(字)

node.js写一个http小爬虫

node.js的cheerio 写的http小爬虫

参考慕课网 进击Node.js基础(一)
爬取得本课程的章节目录

安装 cheerio

1
npm install cheerio

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
var http = require('http')
var cheerio = require('cheerio')
var url = 'http://www.imooc.com/learn/348'
function filerChapters(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=filerChapters(html)
printCourseInfo(courseData)
})
}).on('error',function(){
console.log('获取课程数据出错!')
})

运行

node crawler.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
第1章 前言
带你了解为什么要学习 Nodejs。
【6687】
1-1 Node.js基础-前言
(01:20)
开始学习
【6688】
1-2 为什么学习Nodejs
(05:43)
开始学习
第2章 安装 Nodejs
学习在 windows、Linux 及 Mac 系统下安装 Nodejs。
【6689】
2-1 Node.js基础-课程简介
(01:19)
开始学习
【6690】
2-2 Nodejs版本常识
(01:02)
开始学习
【6691】
2-3 Windows下安装Nodejs
(04:43)
开始学习
【6692】
2-4 Linux下安装Nodejs
(06:24)
开始学习
【6693】
2-5 Mac下安装Nodejs
(03:55)
开始学习
第3章 等不及了来尝鲜
先来配一个Nodejs服务。
【6694】
3-1 Node.js基础-起一个web服务器
(05:14)
开始学习
【6695】
3-2 Node.js基础-命令行中体验
(02:47)
开始学习
第4章 模块与包管理工具
学习 Nodejs 模块及管理工具。
【6697】
4-1 Node.js 的模块 与 Commonjs 规范
(03:44)
开始学习
【6700】
4-2 模块的分类
(00:45)
开始学习
【6701】
4-3 简单的Nodejs模块
(09:23)
开始学习
第5章 横扫 Nodejs API
Nodejs API任你学习。
【6705】
5-1 Node.js-不要陷入版本选择的深渊
(02:32)
开始学习
【6710】
5-2 URL网址解析的好帮手
(10:30)
开始学习
【6711】
5-3 QueryString参数处理小利器
(06:40)
开始学习
【6712】
5-4 HTTP知识先填坑
(09:43)
开始学习
【6713】
5-5 HTTP知识填坑之“以慕课网为例分析”
(10:13)
开始学习
【7557】
5-6 HTTP 事件回调进阶
(17:51)
开始学习
【7558】
5-7 HTTP 源码解读之先了解作用域、上下文
(20:50)
开始学习
【7963】
5-8 HTTP 源码解读
(22:08)
开始学习
【7964】
5-9 HTTP 性能测试
(09:15)
开始学习
【7965】
5-10 HTTP 小爬虫
(17:33)
开始学习
【8525】
5-11 事件模块小插曲
(15:15)
开始学习
【8837】
5-12 Node.js:request方法
(17:56)
开始学习

由于慕课网课程页面DOM结构有所变更,代码的内class与原教程相比做了些改动

AlexZ33 wechat
扫码订阅公众号
如果文章对您有用请随意打赏,谢谢支持!