Node.js小爬虫

写在前面:

  • 安装Node.js和npm不再赘述
  • 使用http模块机cheerio模块实现
  • 在安装cheerio之前必须安装express及相关组建
    npm install express -gd
    然后再安装cheerio
    npm install cheerio

Code:

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

function filterChapters(html) {
    var $ = cheerio.load(html);
    var chapters = $('.chapter');

    // [{
    //     chapterTitle : '',
    //     videos : [
    //         title : '',
    //         id : ''
    //     ]
    // }]

    var courseData = [];
    chapters.each(function(item) {
        var chapter = $(this);
        var chapterTitle = chapter.find('strong').text();
        var videos = chapter.find('.video').children('li');
        var chapterData = {
            chapterTitle : chapterTitle,
            videos : []
        }

        videos.each(function(item) {
            var video = $(this).find('.J-media-item');
            var videoTitle = video.text();
            var 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) {
        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("获取课程数据出错!");
})

用node跑一下可看到结果:

http小爬虫
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • var http=require('http'); var cheerio=require('cheerio') ...
    浅唱南山忆阅读 1,579评论 0 0
  • JavaScript 模块化编程 网站越来越复杂,js代码、js文件也越来越多,会遇到什么问题? 命名冲突; 文件...
    magic_pill阅读 5,348评论 0 1
  • NPM 使用介绍 NPM是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题,常见的使用...
    yyshang阅读 3,034评论 0 1
  • 喜欢热闹中独自的安静
    候鸟人阅读 2,187评论 0 0
  • 他生活在这座城市的底层,以他的收入,只配拥有一张“笑颜”面具,每天早上,他都必须戴着面具准时准点上班。 基本法则让...
    艾迪蓝波阅读 5,511评论 1 58