已经实现了如何获得对应的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,而不需要我们操心了。
转载请注明:在路上 » 【已解决】Python中实现带Cookie的Http的Post请求