nodejs 中express框架中request有哪些属性和方法

nodejs 中express框架中request有哪些属性和方法,第1张

最近本人在学习开发NodeJs,使用到express框架,对于网上的学习资料甚少,因此本人会经常在开发中做一些总结。

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

Checks route params (reqparams), ex: /user/:id

Checks query string params (reqquery), ex: id=12

Checks urlencoded body params (reqbody), ex: id=

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

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

3、例如:127001:300/index,然后post了一个id=2的值,这种方式是获取客户端post过来的数据,可以通过reqbodyid获取,类似于PHP的post方法;

下面举例介绍下这三个方法:

如下一个testhtml代码

<form action="/index" method="get">

<input type="text" name="login_name"/>

<input type="submit" value="Sign In" />

</form>

在nodeJs中我们要自定义>

抓取网站上的妹子照片。

第三方模块

superagent : 第三方Nodejs 模块,用于处理服务器和客户端的>

cheerio : 为服务器端定制的Jquery实现。

思路

通过superagent 获取目标网站的dom

通过cheerio对dom进行解析,获得通用布局。

如果只是爬取一个页面,则可以直接将目标页面的目标元素获取

如果是分页或者多个页面,可以通过循环获得目标链接,进行多次抓取。

实现

这里我们实现一个抓取网站妹子的照片。

目标网址:>

代码如下:

//引入第三方和通用模块

var fs = require('fs');//为了将抓取的存到本地,使用fs

var superagent = require('superagent');//引入superagent

var cheerio = require('cheerio');//引入jquery实现

var filePath = '/node/学习/sis/img/';//定义抓取妹子文件存放路径

var count = 0;//记录抓取数量

var test = [];

//抓取一个页面的实现。

var getOnePage = function(url){

    //因为煎蛋对请求做了限制,所以将cookie加上了。如果你要访问该网站的话,可以通过浏览器查找cookie 并进行替换

    superagentget(url)

    set({

            'user-agent':'Mozilla/50 (Windows NT 100; WOW64) AppleWebKit/53736 (KHTML, like Gecko) Chrome/4702526111 Safari/53736'

    })

    set('cookie','500322148=53; Hm_lvt_fd93b7fb546adcfbcf80c4fc2b54da2c=1454117846; Hm_lpvt_fd93b7fb546adcfbcf80c4fc2b54da2c=1454119909')

    set({

        'accept' : 'text/html,application/xhtml+xml,application/xml;q=09,image/webp,/;q=08',

        'connection' : 'keep-alive',

        'host' : 'jandannet'

    })

    end(function(err,sres){//这里是对获取的dom进行处理

        if(err)throw err;

        var $ = cheerioload(srestext);

        var nextUrl = $('previous-comment-page')attr('href');//获得下一页的链接,为了开始下一次请求

        $('img')each(function(index,ele){//循环该页面的所有并得到对应的链接,放进数组。

            var u = '';

            if($(ele)attr('org_src')){

                u = $(ele)attr('org_src');

            }else{

                u = $(ele)attr('src');    

            }

            testpush(u);

            //通过superagent 获取数据,并保存到本地。

            superagentget(u)end(function(err,sres){

                if(err)throw err;

                //根据访问路径获得文件名称

                var ttt = usplit('/');

                var name = ttt[tttlength-1];

                var path = filePath+name

                fswriteFile(path,sresbody,function(){

                    count++;

                    consolelog(u);

                    consolelog('已成功抓取'+count+'张');

                });

            });

        });

        if(null != nextUrl && '' != nextUrl){ //何时开始下一次请求

            getOnePage(nextUrl);

        }

    }); 

};

getOnePage('/');//触发第一次请求开始

5 结果

CSDN的登录界面下会有“两周内不再登录”选项,用户登录后会保存用户登录信息,第二次登录时自动补全登录密码

二、过程

1、当客户端发送一个请求的时候,会产生一个request对象,这个对象里面就包含了cookie

2、服务端先设置cookie信息,并在客户端请求时把这个cookie信息发送给客户端,客户端会自动保存cookie的key/value值

3、下次向服务端发送请求时,客户端会自动带上cookie信息,服务端会根据cookie信息来识别状态。(之前是否访问过)

4、简单说就是在客户端,保存一串加密后的字符串,下次用户访问时,获取这个加密串进行解密匹配,然后创建登录Session信息。

三、定义

cookie用来给无状态的>

首先,你需要在服务器端使用一个Session模块,比如Express的Session模块。

然后,在你的路由中,你可以访问reqsessionusername,这样就可以获取到用户名了。

例如:

appget('/', function(req, res){

var username = reqsessionusername;

ressend('Hello ' + username);

});

1var language = windownavigatorlanguage

Linux 是获取相关的环境变量,这个不难。Windows的话中文版默认都是GBK

打印头信息就可以了,因为nodejs是基于>

玩nodejs的话,最好把>

session运行在服务器端,当客户端第一次访问服务器时,可以将客户的登录信息保存。

当客户访问其他页面时,可以判断客户的登录状态,做出提示,相当于登录拦截。

session可以和Redis或者数据库等结合做持久化 *** 作,当服务器挂掉时也不会导致某些客户信息(购物车)丢失。

以上就是关于nodejs 中express框架中request有哪些属性和方法全部的内容,包括:nodejs 中express框架中request有哪些属性和方法、如何使用nodejs做爬虫程序、如果需要两个cookie发往客服端,需要的代码是等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9445354.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存