文档章节

http 小爬虫

GZhiDao
 GZhiDao
发布于 2015/12/11 00:15
字数 285
阅读 174
收藏 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课程:relieved:

有个地方出错了 还没修改

额额,哪里出错了?

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

引用来自“GZhiDao”的评论

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

木渴望,node课程:relieved:

有个地方出错了 还没修改

额额,哪里出错了?
GZhiDao
GZhiDao

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

木渴望,node课程:relieved:

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

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

赤尔宝丁
2016/05/03
1K
2
网络爬虫引擎 simspider 更新至 v2.4.0

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

calvinwilliams
2015/03/13
2.8K
7
scrapyd:基于scrapy的爬虫发布管理工具

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

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

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

calvinwilliams
2015/03/08
922
1
垂直型爬虫架构设计(1)

从事爬虫方向开发马上也将近两年时间了,今天基友问我关于爬虫的架构设计问题.其实这么久也想总结一下自己的整个开发的过程,架构的设计问题..对自己进行一些总结..仅作参考. 1.爬虫的分类 : ...

CainGao
2015/09/14
6.2K
24

没有更多内容

加载失败,请刷新页面

加载更多

【源码分析】面试问烂的equals和各种字符串、Integer比较

今天在空闲时间聊天时发现,面试题中的equals问题,以及String、Integer等的判等问题还是讨论的比较激烈而且混乱。。。(滑稽) 其实网上有非常多关于这种面试题的文章或者博客,其实多去看看就...

LinkedBear
12分钟前
4
0
jvm汇总

https://www.toutiao.com/i6490796229067276814/ https://tech.meituan.com/jvm_optimize.html

tantexian
12分钟前
1
0
限制MongoDB使用内存大小

限制MongoDB使用内存大小 0 收藏(6)因为MongoDB的内存是系统的虚拟内存管理的,MongoDB并不干涉内存管理工作,这样虽然可以简化Mongo的工作,但同时Mongo的内存使用是没法控制的。 真的没法控...

Airship
13分钟前
2
0
“赋能开发者”高峰论坛暨西安葡萄城30周年庆典隆重举办

 2018 年 10 月 18 日,“赋能开发者”高峰论坛暨西安葡萄城 30 周年庆典在古城西安隆重举办。   此次论坛由西安葡萄城信息技术有限公司(以下简称“西安葡萄城”)主办。作为软件开发行业...

葡萄城技术团队
14分钟前
1
0
聊聊storm的reportError

序 本文主要研究一下storm的reportError IErrorReporter storm-2.0.0/storm-client/src/jvm/org/apache/storm/task/IErrorReporter.java public interface IErrorReporter { void report......

go4it
15分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部