文档章节

http 小爬虫

GZhiDao
 GZhiDao
发布于 2015/12/11 00:15
字数 285
阅读 176
收藏 3
localhost:2015 端口
var http = require('http')

http
    .createServer(function(req, res){
        res.writeHead(200, {'Content-Type':'text/plain'})
        res.write('hello nodejs')
        res.end()
    })
    .listen(2015)

// 获取网页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('error', function(){
//     console.log('获取课程数据出错!')
// })
//获取页面的指定内容
//当前目录安装cheerio  -->  npm install cheerio

var http = require('http')
var cheerio = require('cheerio') //引用文件cheerio.js
var url = 'http://www.imooc.com/learn/348'

function filterChapters(html){
    var $ = cheerio.load(html)
    var chapters = $('.learnchapter') //通过class learnchapter /  chapter 拿到每个大章节
       
       var courseData = []

       chapters.each(function(item){ //遍历chapters里面的内容
           var chapter = $(this)
           var chapterTitle = chapter.find('strong').text()  //找到章节里面的strong标签内的内容
           var videos = chapter.find('.video').children('li') //小章节内的li
           var childrenData = {  //创建对象自变量
               chapterTitle: chapterTitle,
               videos: [] //空数组
           }

           videos.each(function(item){
               var video = $(this).find('.studyvideo') //视频class
               var videoTitle = video.text()
               var id = video.attr('href').split('video/')[1]

               childrenData.videos.push({
                   title: videoTitle,
                   id: id
               })
           })
           courseData.push(childrenData)
       })

       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(){
        // console.log(html)
        var courseData = filterChapters(html)
        printCourseInfo(courseData)
    })
}).on('error', function(){
    console.log('获取课程数据出错!')
})


© 著作权归作者所有

共有 人打赏支持
GZhiDao
粉丝 6
博文 119
码字总数 89796
作品 0
广州
前端工程师
私信 提问
加载中

评论(4)

GZhiDao
GZhiDao

引用来自“湖心亭看雪”的评论

引用来自“GZhiDao”的评论

引用来自“湖心亭看雪”的评论

木渴望,node课程😌

有个地方出错了 还没修改

额额,哪里出错了?

获取大章节的class 错了
湖心亭看雪
湖心亭看雪

引用来自“GZhiDao”的评论

引用来自“湖心亭看雪”的评论

木渴望,node课程😌

有个地方出错了 还没修改

额额,哪里出错了?
GZhiDao
GZhiDao

引用来自“湖心亭看雪”的评论

木渴望,node课程😌

有个地方出错了 还没修改
湖心亭看雪
湖心亭看雪
木渴望,node课程😌
大量 python 爬虫源码分享--说说 python 爬虫这件小事

没有爬虫就没有互联网,越来越觉得写 Python 爬虫原来是一件快乐而高兴的事情,以下是本人收集整理的一批 python 爬虫代码,顺便分享到了别的网站上,喜欢的下下来看看吧。 内容: yunpan.3...

赤尔宝丁
2016/05/03
1K
2
scrapyd:基于scrapy的爬虫发布管理工具

最近研究scrapy爬虫框架,在整站爬取上及其方便。但是因为boss的需求比较怪异,需要自动化的最大量不同站点做爬取,而scrapy实现上述功能又不够智能和方便。后来在scrapy文档里发现了scrapyd...

zp2006011242
2017/07/11
0
0
网络爬虫引擎 simspider 更新至 v2.2.1

ver 2.2.1 2015-02-09 calvin * 修正了入口网址的内部自动补全问题 * 修正了删除请求队列后没有重置结果指针的安全编码问题 * 修正了WINDOWS平台的编译问题 ------------------------------...

calvinwilliams
2015/02/09
3.1K
1
网络爬虫引擎 simspider 更新至 v2.4.0

simspider 2.4.0 发布了,改进内容包括: * 新增多路复用并发数自动调整机制 * 新增HTTP请求头自定义专用链表 * 自动增加Referer请求头选项 * 完善了主流程框架对事件的响应以提高性能 * cu...

calvinwilliams
2015/03/13
2.9K
7
simspider 更新至 v2.3.0,网络爬虫引擎

ver 2.3.0 2015-03-08 calvin * 增加错误码SIMSPIDER_ERROR_FUNCPROC_INTERRUPT,回调函数中返回该错误码,爬行过程立即中断 * 修改函数AppendRequestQueue原型 * 修改函数SimSpiderGo原型 ...

calvinwilliams
2015/03/08
981
1

没有更多内容

加载失败,请刷新页面

加载更多

TiDB Lab 诞生记 | TiDB Hackathon 优秀项目分享

本文由红凤凰粉凤凰粉红凤凰队的成员主笔,他们的项目 TiDB Lab 在本届 TiDB Hackathon 2018 中获得了二等奖。TiDB Lab 为 TiDB 培训体系增加了一个可以动态观测 TiDB / TiKV / PD 细节的动画...

TiDB
14分钟前
0
0
当区块链遇到零知识证明

本文由云+社区发表 当区块链遇到零知识证明 什么是零知识证明 零知识证明的官方定义是能够在不向验证者任何有用的信息的情况下,使验证者相信某个论断是正确的。这个定义有点抽象,下面笔者举...

腾讯云加社区
23分钟前
0
0
nginx的内容

1、nginx 稳定,由俄国人开发, nginx.org 分支: tengine,由淘宝开发; tengine.taobao.com nginx的功能:http服务, 负载均衡 反向代理 邮件代理 缓存加速 SSL, 功能完善;高并发 可以用来处理...

芬野de博客
42分钟前
3
0
websocket 接口简单测试工具,webcoket实用测试工具

chorme 插件 Simple WebSocket Client 对开发来说够用了,能连互联网,也能连本地的。 之前用jmeter 带复杂了,而且登录不好弄,这个基于浏览器,共享浏览器的登录信息。方便!...

SimonAt
47分钟前
5
0
Ext中 get、getDom、getCmp的区别

getDom方法能够得到文档中的DOM节点,该方法中包含一个参数,该参数可以是DOM节点的id、DOM节点对象或DOM节点对应的Ext元素(Element)等。 (与getElementById是一个效果) •Ext.onReady(funct...

休辞醉倒
55分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部