node.js获得参数的三种方式。

Checks route params (req.params), ex: /user/:id


Checks query string params (req.query), ex: ?id=12


Checks urlencoded body params (req.body), ex: id=





1、例如:127.0.0.1:3000/index,这种情况下,我们为了得到index,我们可以通过使用req.params得到,通过这种方法我们就可以很好的处理Node中的路由处理问题,同时利用这点可以非常方便的实现MVC模式;




2、例如:127.0.0.1:3000/index?id=12,这种情况下,这种方式是获取客户端get方式传递过来的值,通过使用req.query.id就可以获得,类似于PHPget方法;




3、例如:127.0.0.1:3000/index,然后post了一个id=2的值,这种方式是获取客户端post过来的数据,可以通过req.body.id获取,

 

2,例如访问:https://cnodejs.org/?tab=all&page=4

 

var express = require('express');
var router = express.Router();

var cnblog=require('../spiders/cnblog');

/* GET home page. */
router.get('/', function(req, res, next) {

/*        express获取参数有三种方法:官网介绍如下

        Checks route params (req.params), ex: /user/:id
        Checks query string params (req.query), ex: ?id=12
        Checks urlencoded body params (req.body), ex: id=

        1、例如:127.0.0.1:3000/index,这种情况下,我们为了得到index,我们可以通过使用req.params得到,通过这种方法我们就可以很好的处理Node中的路由处理问题,同时利用这点可以非常方便的实现MVC模式;

        2、例如:127.0.0.1:3000/index?id=12,这种情况下,这种方式是获取客户端get方式传递过来的值,通过使用req.query.id就可以获得,类似于PHP的get方法;

        3、例如:127.0.0.1:3000/index,然后post了一个id=2的值,这种方式是获取客户端post过来的数据,可以通过req.body.id获取,类似于PHP的post方法;*/
    var page=req.query.page;
    var tab=req.query.tab;
    var requestUrl=  'https://cnodejs.org/';
    if(page!=undefined){
        requestUrl='https://cnodejs.org/?tab='+tab+'&page='+page;
    }
    console.log("requestUrl="+requestUrl);
    var blog=new cnblog(requestUrl);
    blog.getData(res);
  //res.render('index', { title: 'Express' });

});

module.exports = router;

 

2,spiders/cnblog抓取网页

 

 /**
 * Created by Administrator on 2015/11/17.
 */
var superagent= require('superagent');
var cheerio= require('cheerio');
var url = require('url');

var qs = require('querystring');

var cnodeUrl="";// = 'https://cnodejs.org/';

var CnBlog=function(url){
    cnodeUrl=url;
};
CnBlog.prototype={
    getData:function(res){
    // 用 superagent 去抓取 https://cnodejs.org/ 的内容
    superagent.get(cnodeUrl)
        .end(function (err, sres) {
            // 常规的错误处理
            if (err) {
                return next(err);
            }
            // sres.text 里面存储着网页的 html 内容,将它传给 cheerio.load 之后
            // 就可以得到一个实现了 jquery 接口的变量,我们习惯性地将它命名为 `$`
            // 剩下就都是 jquery 的内容了
            var $ = cheerio.load(sres.text);
            //获取总页数
            var lastPageUrl= $('.pagination li:last-child').find('a').attr('href');
            console.log(lastPageUrl);



            if(lastPageUrl!=undefined){
                var queryUrl = url.parse(lastPageUrl).query;
                console.log(queryUrl);
                var obj= qs.parse(queryUrl);
                console.log(obj);

                var totalPages=obj.page;
                console.log(totalPages);
            }else{
                var totalPages=$('.pagination').attr('current_page');
                console.log(totalPages);
            }

            var items = [];

            $('#topic_list .topic_title').each(function (idx, element) {
                var $element = $(element);
                var type=$element.parent().parent().find('.topiclist-tab').text();
                items.push({
                    title: $element.attr('title'),
                    href: $element.attr('href'),
                    link:url.resolve(cnodeUrl, $element.attr('href')),
                    type:type
                });
            });
            items.totalPages=totalPages;

            //return items;
            //res.send(items);
            //console.log(items);


            res.render('list',{
                title:'资源列表',
                items:items
            });
        });

    }
}

module.exports=CnBlog

 

转载于:https://my.oschina.net/u/2480757/blog/634008

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值