如何保存mechanize.Browser()cookie到文件?

时间:2011-09-22 07:00:43

标签: python mechanize

我怎样才能使Python的模块机械化(特别是mechanize.Browser())将其当前的cookie保存到人类可读的文件中?另外,我如何将该cookie上传到带有它的网页?

由于

3 个答案:

答案 0 :(得分:3)

Deusdies,我只是想出了一种对Mykola Kharechko post

的尊敬的方式
#to save cookie
>>>cookiefile=open('cookie','w')
>>>cookiestr=''
>>>for c in br._ua_handlers['_cookies'].cookiejar:
>>>    cookiestr+=c.name+'='+c.value+';'
>>>cookiefile.write(cookiestr)  
#binding this cookie to another Browser
>>>while len(cookiestr)!=0:
>>>    br1.set_cookie(cookiestr)
>>>    cookiestr=cookiestr[cookiestr.find(';')+1:]
>>>cookiefile.close()

答案 1 :(得分:2)

如果您想将cookie用于Web请求,例如GET或POST(mechanize.Browser不支持),您可以使用请求库和cookie,如下所示

import mechanize, requests

br = mechanize.Browser()
br.open (url)
# assuming first form is a login form
br.select_form (nr=0)
br.form['login'] = login
br.form['password'] = password
br.submit()
# if successful we have some cookies now
cookies = br._ua_handlers['_cookies'].cookiejar
# convert cookies into a dict usable by requests
cookie_dict = {}
for c in cookies:
    cookie_dict[c.name] = c.value
# make a request
r = requests.get(anotherUrl, cookies=cookie_dict)

答案 2 :(得分:1)

CookieJar有几个子类,可用于将cookie保存到文件中。对于浏览器兼容性使用MozillaCookieJar,对于简单的人类可读格式,请使用LWPCookieJar,就像这样(通过HTTP POST进行身份验证):

import urllib
import cookielib
import mechanize

params = {'login': 'mylogin', 'passwd': 'mypasswd'}
data = urllib.urlencode(params)

br = mechanize.Browser()
cj = mechanize.LWPCookieJar("cookies.txt")
br.set_cookiejar(cj)
response = br.open("http://example.net/login", data)
cj.save()