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获取,
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