zoukankan      html  css  js  c++  java
  • nodejs 小爬虫

    编写爬虫示例:

    var http = require('http');
    var cheerio = require('cheerio');
    
    var url = 'http://www.cnblogs.com/tianxintian22/';
    
    function filterblogs(html) {
        var $ = cheerio.load(html);
    
        var blogs = $('.day');
    
        // [{
        //     dayTitle: '',
        //    dayCont: {
        //        postId: '',
        //         postTitle: '',
        //         postCont: ''
        //    }
        // }]
    
        var blogDatas = [];
    
        blogs.each(function(item) {
            var blog = $(this);
            var dayTitle = blog.find('.dayTitle a').text();
            var blogData = {
                dayTitle: dayTitle,
                dayCont: []
            };
    
            var postId = blog.find('.postCon .c_b_p_desc a').attr('href').split('p/')[1].replace('.html', '');
            var postTitle = blog.find('.postTitle a').text();
            var postCont = blog.find('.postCon .c_b_p_desc').text();
    
            blogData.dayCont.push({
                postId: postId,
                postTitle: postTitle,
                postCont: postCont
            });
    
            blogDatas.push(blogData);
        })
    
        return blogDatas;
    
    }
    
    function printBlogInfo(blogDatas) {
        blogDatas.forEach(function(item) {
            var dayTitle = item.dayTitle;
            console.log(dayTitle + '
    ');
    
            item.dayCont.forEach(function(blog){
                console.log('    【' + blog.postId + '】' + blog.postTitle +'
    ');
                console.log('    ' + blog.postCont + '
    ');
            });
        })
    }
    
    http.get(url, function (res) {
        var html = '';
    
        res.on('data', function(data) {
            html += data;
        });
    
        res.on('end', function() {
            var blogDatas =  filterblogs(html);
            printBlogInfo(blogDatas);
        });
    }).on('error', function() {
        console.log('获取博客数据出错');
    })
  • 相关阅读:
    简单工厂
    Java鲁棒性(健壮性)
    外部类,成员内部类,局部内部类能被哪些修饰符修饰
    Java枚举类的7种常用的方法
    同步,异步,阻塞,非阻塞
    对于面向对象的基本理解
    对于数组的一点理解
    类加载机制-双亲委派机制(三)
    架构- 数据库的优化
    python调用jenkinsapi
  • 原文地址:https://www.cnblogs.com/tianxintian22/p/5121530.html
Copyright © 2011-2022 走看看