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=4html

 

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=

        一、例如:127.0.0.1:3000/index,這種狀況下,咱們爲了獲得index,咱們能夠經過使用req.params獲得,經過這種方法咱們就能夠很好的處理Node中的路由處理問題,同時利用這點能夠很是方便的實現MVC模式;

        二、例如:127.0.0.1:3000/index?id=12,這種狀況下,這種方式是獲取客戶端get方式傳遞過來的值,經過使用req.query.id就能夠得到,相似於PHP的get方法;

        三、例如: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抓取網頁java

 

 /**
 * 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
相關文章
相關標籤/搜索