1
我使用这个代码:如何在python中的多个请求中使用相同的cookie?
def req(url, postfields):
proxy_support = urllib2.ProxyHandler({"http" : "127.0.0.1:8118"})
opener = urllib2.build_opener(proxy_support)
opener.addheaders = [('User-agent', 'Mozilla/5.0')]
return opener.open(url).read()
为了使一个简单的HTTP GET请求(使用Tor作为代理)。
现在我想知道如何使用相同的cookie进行多个请求。
例如:
req('http://loginpage', 'postfields')
source = req('http://pageforloggedinonly', 0)
#do stuff with source
req('http://anotherpageforloggedinonly', 'StuffFromSource')
我知道,我的功能REQ不支持POST(还),但所以我想我可以通过自己的身影,我已经派人用httplib的postfields,但我不不明白如何使用cookies,我看到一些例子,但它们都只是一个请求,我想在第一次登录请求中重复使用后续请求中的cookie,或者从文件中保存/使用cookie(比如curl) ,这会让一切变得更容易。
我发布的代码只是为了说明我想实现的目标,我想我将使用httplib(2)作为最终的应用程序。
UPDATE:
cookielib.LWPCOokieJar工作得很好,这里有一个样品我做了测试:
import urllib2, cookielib, os
def request(url, postfields, cookie):
urlopen = urllib2.urlopen
cj = cookielib.LWPCookieJar()
Request = urllib2.Request
if os.path.isfile(cookie):
cj.load(cookie)
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
urllib2.install_opener(opener)
txheaders = {'User-agent' : 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'}
req = Request(url, postfields, txheaders)
handle = urlopen(req)
cj.save(cookie)
return handle.read()
print request('http://google.com', None, 'cookie.txt')
COokielib.LWPCookieJar完成了这项工作,谢谢。 – jahmax 2010-07-24 21:32:23