python提交带中文post请求_【已解决】Python中实现带Cookie的Http的Post请求

已经实现了如何获得对应的cookie,具体参考:

【已解决】Python中如何获得访问网页所返回的cookie

现在想要把已获得cookie,在http的提交post请求的时候,也同时发送过去。

即,实现带cookie的http的post。

【解决过程】

1.看了这里

http://www.ideawu.net/blog/archives/270.html

的介绍,好像是cookiejar,自动管理的,不需要手动指定之前已有的cookie了。

去写代码试试。

2.后来的结果证实了,接下来,直接调用urllib2.Request,其自动会把cookie送过去的,

因为之前已经是urllib2.build_opener,添加了对应cookiejar去自动管理cookie了。

对应的代码如下:# first url request

baiduSpaceEntryUrl = "http://hi.baidu.com/motionhouse";

cj = cookielib.CookieJar();

opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj));

urllib2.install_opener(opener);

resp = urllib2.urlopen(baiduSpaceEntryUrl);

# second time do url request, the cookiejar will auto handle the cookie

loginBaiduUrl = "https://passport.baidu.com/?login";

para = {

'username' : username,

'password' : password,

'mem_pass' : 'on',

};

postData = urllib.urlencode(para);

req = urllib2.Request(loginBaiduUrl, postData); # urllib2.Request: the HTTP request will be a POST instead of a GET when the data parameter is provided.

req.add_header('User-Agent', gConst['userAgentIE9']);

req.add_header('Content-Type', 'application/x-www-form-urlencoded');

req.add_header('Cache-Control', 'no-cache');

req.add_header('Accept', '*/*');

req.add_header('Connection', 'Keep-Alive');

resp = urllib2.urlopen(req);

respInfo = resp.info();

【总结】

Python中的cookiejar,自动帮我们管理好cookie,用起来,还是蛮方便的。

我们要做的只是,第一次build_opener的时候,把对应的cookiejar传进去,

以后每次的http的request,都会自动包含了cookie,而不需要我们操心了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值