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

    const request=require('request');
    const cheerio=require('cheerio');
    (function () {
        //页面信息==》简介相关
        var getInfo=function (i) {
            var url='http://www.cnblogs.com/flyings/default.html?page='+i;
            request(url,function (err,res,body){
                let $ = cheerio.load(body);
                for(let i=0; i<$('.postTitle').length; i++){
                    let href=$('.postTitle').eq(i).find('a').attr('href');
                    let bid=/d*.html/.exec(href)[0].replace('.html','');
                    let title=$('.postTitle').eq(i).find('a').text();
                    let desc=$('.postCon').eq(i).find('.c_b_p_desc').text().replace(/阅读全文/ig,"").replace(/摘要:/ig,"");
                    let blog={bid:bid,title:title, desc:desc }
    
                    console.log(blog)
    
    
                    // 存到数据库
                    // let param={
                    //     where:{bid:blog.bid},
                    //     data:blog,
                    //     option:{upsert:true}
                    // }
                    //blogModel.saveOrUpdate(param, function (error) {});
    
    
                    //根据pid爬出详情数据
                    getInforDetail(bid)
                }
    
            })
        }
    
        //页面信息==》详情相关
        var getInforDetail=function (j) {
            var url='http://www.cnblogs.com/flyings/p/'+j+'.html';
            request(url,function (err,res,body){
                let $ = cheerio.load(body);
                let bid=j;
                let title=$('.postTitle').find('a').text();
                let content=$('#cnblogs_post_body').html();
                let blogDetail={bid:bid,title:title,content:content}
                console.log(blogDetail)
    
                // 存到数据库
                // let param={
                //     where:{bid:blogDetail.bid},
                //     data:blogDetail,
                //     option:{upsert:true}
                // }
                // blogDetailModel.saveOrUpdate(param, function (error) {});
            })
        }
    
    
        //获取自己博客文章总页数,并开始爬数据
        var getInit=function () {
            request('http://www.cnblogs.com/flyings/default.html?page=2',function (err,res,body){
                console.log(123)
                let $ = cheerio.load(body);
                let str= $('.pager').eq(1).text();
                let pages=/共d*页/.exec(str)[0].replace(/[^0-9]/ig,"");
                for(let i=0; i<pages; i++){
                    getInfo(i)
                }
            })
        }
    
        getInit()
    
    
    })()

  • 相关阅读:
    Python脚本运行出现语法错误:IndentationError: unindent does not match any outer indentation level
    Python3 运算符
    Python3 注释
    Python3 解释器
    Python3 环境搭建
    Python 3 教程
    Python3 基本数据类型
    趣闻|Python之禅(The Zen of Python)
    ios开发笔记根据传入字符串的长度动态生成label,并按照屏幕宽度排列
    iOS开发设置tableview的分割线
  • 原文地址:https://www.cnblogs.com/dshvv/p/8016639.html
Copyright © 2011-2022 走看看