2011-09-22 6 views
3

파이썬의 모듈을 기계화 (특히 mechanize.Browser())하여 현재 쿠키를 사람이 읽을 수있는 파일로 저장하도록하려면 어떻게해야합니까? 또한 쿠키를 웹 페이지에 업로드하는 방법은 무엇입니까?mechanize.Browser() 쿠키를 파일에 저장하는 방법은 무엇입니까?

감사

+1

는 당신이 본 적있어 다음과 같이 또는 POST (mechanize.Browser 지원하지 않는)을, 당신은 요청 라이브러리와 쿠키를 사용할 수 있습니까? –

답변

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

CookieJar 파일에 쿠키를 저장하는 데 사용할 수있는 여러 하위 클래스가 있습니다에에 refrence와 방법을 알아 냈어. 브라우저 호환성 사용 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() 
+1

저장을 위해'''ignore_discard = True, ignore_expires = True'''를 추가하는 편이 낫습니다. 그리고 재사용 쿠키 케이스에로드를 사용하십시오. – TerrenceSun

2

당신이 그런 GET 같은 웹 요청에 대한 쿠키를 사용하려면 http://wwwsearch.sourceforge.net/mechanize/doc.html :

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) 
관련 문제