文档章节

http 小爬虫

GZhiDao
 GZhiDao
发布于 2015/12/11 00:15
字数 285
阅读 174
收藏 3
点赞 0
评论 4
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
博文 115
码字总数 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 ⋅ 2

网络爬虫引擎 simspider 更新至 v2.4.0

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

calvinwilliams ⋅ 2015/03/13 ⋅ 7

scrapyd:基于scrapy的爬虫发布管理工具

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

zp2006011242 ⋅ 2017/07/11 ⋅ 0

simspider 更新至 v2.3.0,网络爬虫引擎

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

calvinwilliams ⋅ 2015/03/08 ⋅ 1

垂直型爬虫架构设计(1)

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

CainGao ⋅ 2015/09/14 ⋅ 24

网络爬虫引擎 simspider 更新至 v2.2.1

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

calvinwilliams ⋅ 2015/02/09 ⋅ 1

[转] 互联网网站的反爬虫策略浅析

因为搜索引擎的流行,网络爬虫已经成了很普及网络技术,除了专门做搜索的Google,Yahoo,微软,百度以外,几乎每个大型门户网站都有自己的搜索引擎,大大小小叫得出来名字得就几十种,还有各...

鉴客 ⋅ 2010/11/24 ⋅ 0

零基础写python爬虫之urllib2使用指南

零基础写python爬虫之urllib2使用指南 前面说到了urllib2的简单入门,下面整理了一部分urllib2的使用细节。 1.Proxy 的设置 urllib2 默认会使用环境变量 http_proxy 来设置 HTTP Proxy。 如果...

开元中国2015 ⋅ 2015/08/06 ⋅ 0

WebMagic Avalon设计草图

创建爬虫 这里可以配置爬虫的基本信息。 爬虫的抽取逻辑采用模板化的思想,编写一个Java文件之后,提供一些属性注入点,程序会自动根据注入点,产生表单。 ![create spider][1] 管理爬虫 这里...

黄亿华 ⋅ 2014/02/25 ⋅ 30

Python爬虫代码:淘宝、豆瓣、知乎、微博、QQ、简书等

[0] 一份Python爬虫电子书 https://zhuanlan.zhihu.com/p/28865834 [1] 爬取网易云音乐所有歌曲的评论 https://github.com/RitterHou/music-163 [2] python爬虫代理IP池(proxy pool) https:......

xrzs ⋅ 2012/12/31 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Jenkins实践3 之脚本

#!/bin/sh# export PROJ_PATH=项目路径# export TOMCAT_PATH=tomcat路径killTomcat(){pid=`ps -ef | grep tomcat | grep java|awk '{print $2}'`echo "tom...

晨猫 ⋅ 今天 ⋅ 0

Spring Bean的生命周期

前言 Spring Bean 的生命周期在整个 Spring 中占有很重要的位置,掌握这些可以加深对 Spring 的理解。 首先看下生命周期图: 再谈生命周期之前有一点需要先明确: Spring 只帮我们管理单例模...

素雷 ⋅ 今天 ⋅ 0

zblog2.3版本的asp系统是否可以超越卢松松博客的流量[图]

最近访问zblog官网,发现zlbog-asp2.3版本已经进入测试阶段了,虽然正式版还没有发布,想必也不久了。那么作为aps纵横江湖十多年的今天,blog2.2版本应该已经成熟了,为什么还要发布这个2.3...

原创小博客 ⋅ 今天 ⋅ 0

聊聊spring cloud的HystrixCircuitBreakerConfiguration

序 本文主要研究一下spring cloud的HystrixCircuitBreakerConfiguration HystrixCircuitBreakerConfiguration spring-cloud-netflix-core-2.0.0.RELEASE-sources.jar!/org/springframework/......

go4it ⋅ 今天 ⋅ 0

二分查找

二分查找,也称折半查找、二分搜索,是一种在有序数组中查找某一特定元素的搜索算法。搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束;如果某一特定元素大于...

人觉非常君 ⋅ 今天 ⋅ 0

VS中使用X64汇编

需要注意的是,在X86项目中,可以使用__asm{}来嵌入汇编代码,但是在X64项目中,再也不能使用__asm{}来编写嵌入式汇编程序了,必须使用专门的.asm汇编文件来编写相应的汇编代码,然后在其它地...

simpower ⋅ 今天 ⋅ 0

ThreadPoolExecutor

ThreadPoolExecutor public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, ......

4rnold ⋅ 昨天 ⋅ 0

Java正无穷大、负无穷大以及NaN

问题来源:用Java代码写了一个计算公式,包含除法和对数和取反,在页面上出现了-infinity,不知道这是什么问题,网上找答案才明白意思是负的无穷大。 思考:为什么会出现这种情况呢?这是哪里...

young_chen ⋅ 昨天 ⋅ 0

前台对中文编码,后台解码

前台:encodeURI(sbzt) 后台:String param = URLDecoder.decode(sbzt,"UTF-8");

west_coast ⋅ 昨天 ⋅ 0

实验楼—MySQL基础课程-挑战3实验报告

按照文档要求创建数据库 sudo sercice mysql startwget http://labfile.oss.aliyuncs.com/courses/9/createdb2.sqlvim /home/shiyanlou/createdb2.sql#查看下数据库代码 代码创建了grade......

zhangjin7 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部