http 小爬虫
博客专区 > GZhiDao 的博客 > 博客详情
http 小爬虫
GZhiDao 发表于2年前
http 小爬虫
  • 发表于 2年前
  • 阅读 171
  • 收藏 3
  • 点赞 0
  • 评论 4

腾讯云 学生专属云服务套餐 10元起购>>>   

摘要: http 小爬虫
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('获取课程数据出错!')
})


共有 人打赏支持
粉丝 7
博文 115
码字总数 89796
评论 (4)
湖心亭看雪
木渴望,node课程:relieved:
GZhiDao

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

木渴望,node课程:relieved:

有个地方出错了 还没修改
湖心亭看雪

引用来自“GZhiDao”的评论

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

木渴望,node课程:relieved:

有个地方出错了 还没修改

额额,哪里出错了?
GZhiDao

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

引用来自“GZhiDao”的评论

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

木渴望,node课程:relieved:

有个地方出错了 还没修改

额额,哪里出错了?

获取大章节的class 错了
×
GZhiDao
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: