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