获取HTML页面

var http = require('http')
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(){
console.log(html)
})
}).on('errer',function(){
console.log('出错')

对HTML页面处理

添加cheerio模块

可以像使用jQuery一样编码

# 安装到当前目录下
npm install cheerio

处理
var http = require('http')
var cheerio = require('cheerio')
var url='http://www.imooc.com/learn/348' function filterChapters(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('h3').text()
var videos = chapter.find('.video').children('li')
var chapterData = {
chapterTitle :chapterTitle.trim(),
videos:[]
} videos.each(function(item){
var video = $(this).find('a')
var videoTile = video.text()
var id = video.attr('href').split('video/')[1]
chapterData.videos.push({
title: videoTile.trim(),
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 = filterChapters(html)
printCourseInfo(courseData)
})
}).on('errer',function(){
console.log('出错')
})

使用promise重写:

10慕课网《进击Node.js基础(一)》初识promise

07慕课网《进击Node.js基础(一)》HTTP小爬虫的更多相关文章

  1. 03慕课网《进击Node.js基础(一)》API-URL网址解析

    url url.parse(url,query,host);解析域名 url必须,地址字符串 query可选 host 可选:在不清楚协议时正确解析 querystring 字符串和对象之间互相解析 ...

  2. 01慕课网《进击Node.js基础(一)》Node.js安装,创建例子

    版本:偶数位为稳定版本,基数为非稳定版本 - 0.6.x - 0.7.x    - 0.8.x -0.9.x    -0.10.x  -0.11.x 概念:Node.js采用谷歌浏览器的V8引擎,用C ...

  3. 10慕课网《进击Node.js基础(一)》初识promise

    首先用最简单的方式实现一个动画效果 <!doctype> <html> <head> <title>Promise animation</titl ...

  4. 进击Node.js基础(二)

    一.一个牛逼闪闪的知识点Promise npm install bluebird 二.Promise实例 ball.html <!doctype> <!DOCTYPE html> ...

  5. node.js 开发简易的小爬虫

    node.js  开发简易的小爬虫 最近公司开发一款医药类的软件,所以需要一些药品的基础数据,所以本人就用node.js写一个简易的小爬虫,并写记录这个Demo以供大家参考. 一.开发前的准备: 1, ...

  6. 02慕课网《进击Node.js基础(一)》——CommonJs标准

    是一套规范管理模块 每个js 为一个模块,多个模块作为一个包 node.js和Couchdb是对其的实现: 不同于jQuery 模块:定义.标识.引用(地址/模块名称) 模块类型: 核心模块http ...

  7. 进击Node.js基础(一)

    一.前言 1:Node.js本质上是用chrome浏览器 v8引擎 使用c++编写的JS运行环境 2:相比于JS没有浏览器安全级的限制,额外提供了一些系统级的API:文件读写,进程管理,网络通信等. ...

  8. 04慕课网《进击Node.js基础(一)》HTTP讲解

    HTTP:通信协议 流程概述: http客户端发起请求,创建端口默认8080 http服务器在端口监听客户端请求 http服务器向客户端返回状态和内容 稍微详细解析: 1.域名解析:浏览器搜素自身的D ...

  9. 11慕课网《进击Node.js基础(一)》Buffer和Stream

    Buffer 用来保存原始数据 (logo.png) 以下代码读取logo.png为buffer类型 然后将buffer转化为string,新建png 可以将字符串配置: data:image/png ...

随机推荐

  1. Java 遍历指定文件夹及子文件夹下的文件

    Java 遍历指定文件夹及子文件夹下的文件 /** * 遍历指定文件夹及子文件夹下的文件 * * @author testcs_dn * @date 2014年12月12日下午2:33:49 * @p ...

  2. [Phonegap+Sencha Touch] 移动开发29 安卓navigator.camera.getPicture得到图片的真实路径

    原文地址:http://blog.csdn.net/lovelyelfpop/article/details/38313021 phonegap的拍照插件选择图库中的图片.代码例如以下: naviga ...

  3. 【ev】视频软件

    EV系列:EV录屏.EV剪辑

  4. GitHub 源码,Framework 框架

    https://github.com/CoderLN/Apple-GitHub-Codeidea Apple 译文.GitHub 源码,随原作者 (大版本) 迭代注解.--- 不知名开发者 https ...

  5. echart 对双折线的使用

    在使用echart的时候,我们会使用到双折线的情况.双折线不仅可以显示和隐藏,还可以根据实际的情况设置刻度的大小,比如Y坐标上的刻度大小.参考网址见:https://www.echartsjs.com ...

  6. watir-webdriver 中根据html5中的data-*属性设置元素

    def jscript(key="",*hashdict) key_dict=hashdict[0].keys[0] value_dict=hashdict[0][key_dict ...

  7. 27-ATM+购物车程序

    1.需求 本章作业: 模拟实现一个ATM + 购物商城程序 额度 15000或自定义 实现购物商城,买东西加入 购物车,调用信用卡接口结账 可以提现,手续费5% 支持多账户登录 支持账户间转账 记录每 ...

  8. 4539: [Hnoi2016]树

    4539: [Hnoi2016]树 链接 分析: 主席树+倍增. 代码: #include<cstdio> #include<algorithm> #include<cs ...

  9. OpenStack入门篇(十九)之网络虚拟化基础

    1.Linux Bridge的基本概念 假设宿主机有 1 块与外网连接的物理网卡 eth0,上面跑了 1 个虚机 VM1,现在有个问题是: 如何让 VM1 能够访问外网?① 给 VM1 分配一个虚拟网 ...

  10. Java 原生日志 java.util.logging

    简介 Java 中的 Logging API 让 Java 应用可以记录不同级别的信息,它在debug过程中非常有用,如果系统因为各种各样的原因而崩溃,崩溃原因可以在日志中清晰地追溯,下面让我们来看看 ...