node.js之爬虫实现

数据引用慕课网

const http = require('http');
const cheerio = require('cheerio');
let url = 'http://www.imooc.com/learn/348'


function filterChapters(html) {
    let $ = cheerio.load(html)
    let chapters = $('.chapter')
    let courseData = [];

    chapters.each(function (item) {
        let chapter = $(this)
        let chapterTitle = chapter.find('h3').text();
        let videos = chapter.find('ul').children('li')
        let chapterData = {
            chapterTitle:chapterTitle,
            videos:[]
        }
        videos.each(function (item) {
            let video = $(this).find('.J-media-item')
            let videoTitle = video.text().trim();
            let id = video.attr('href').split('video/')[1]
            chapterData.videos.push({
                title: videoTitle,
                id: id
            })
        })
        courseData.push(chapterData)
    })
    return courseData;
}

function printCourseInfo(courseData) {
    courseData.forEach(function (item) {
        let chapterTitle = item.chapterTitle
        console.log(chapterTitle + '\n')
        item.videos.forEach(function (video) {
            console.log('   【'+video.id+'】' + video.title + '\n')
        })
    })
}
http.get(url,function (res) {
    let html = ''
    res.on('data',function (data) {
        html += data;
    })
    res.on('end',function () {
        let courseData = filterChapters(html)
        printCourseInfo(courseData)
    })
}).on('error',function () {
    console.log('获取课程数据出错')
})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值