python requests 对比 nodejs request

python的requests和nodejs的request都是一个简单方便的http客户端

python requests的使用

requests.getrequest.post都可以对资源进行GET和POST操作,但是没有状态。

如果希望requests在与服务端连接的过程中保持状态,也就是在建立连接后的一段时间内服务端能够认得客户端,知道客户端不就之前刚刚和服务端建立连接,可以使用request.Session()对象来实现。通过建立一个request.Session()对象,在与服务端交流的过程中,能够自动将服务端发送的cookie插入到下一个请求的header中。

使用request.post()方法时比request.get方法多一个参数data,用来存放提交给服务端的表单内容,一般用一个dict对象传递给这个参数。

requests的中User-Agent字段默认值为python-request,很多服务端的程序都会检查这个字段来判断是否为爬虫的请求,所以有时候需要对这个字段进行修改。

requests的响应如果是302之类的重定向响应,则会自动对重定向的url再次发起请求,最终你得到的是重定向后的响应,如果想要捕获的是302响应,可以在requests.get()或requests.post()中传入allow_redirects = False来禁用重定向。

nodejs request使用

nodejs的request模块的使用都是异步的,可以改用request-promise-native模块,通过async/await的方式来同步使用request。

同样的,request模块的请求也是没有状态的,需要在request函数的选项中传入一个值为request.jar()的参数jar,如下所示

const request = require('request-promise-native');

const options = {
        uri: LOGINURL,
        headers: {
            "User-Agent": ua
        },
        jar: request.jar()
};

request(Roptions q).then((html)=>{
    // ...
    Req['method'] = 'POST';
    Req['form'] = {};
    Req['simple'] = false;
    Req['resolveWithFullResponse'] = true;
    return(options );
}).then(html=>{});

再次使用request并传入options,能够保持连接状态

nodejs request 非get请求遇到重定向响应不会自动处理,如果需要自动处理重定向响应,则需要在options中指定followAllRedirects为true 。request get请求遇到重定向会自动处理,通过指定followRedirect为false禁用

你可能感兴趣的:(TypeScript编程,node.js,python)