2012-02-08 3 views
3

나는 mechanicalize와 python을 사용하여 사이트에 로그인하고 있습니다. 두 가지 기능을 만들었습니다. 첫 번째 사용자는 로그인하고 두 번째 사용자는 사이트를 검색합니다. 얼마나 정확하게 로그인의 쿠키를 저장합니까? 검색 할 때 쿠키가 있습니다.파이썬으로 파일에서 쿠키를 가져 오는 것

현재 코드.

import mechanize 
import cookielib 

def login(username, password): 
    # Browser 
    br = mechanize.Browser() 

    # Cookie Jar 
    cj = cookielib.LWPCookieJar() 
    br.set_cookiejar(cj) 
    cj.save('cookies.txt', ignore_discard=False, ignore_expires=False) 
    # Rest of login 

def search(searchterm): 

    # Browser 
    br = mechanize.Browser() 

    # Cookie Jar 
    cj = cookielib.LWPCookieJar() 
    br.set_cookiejar(cj) 
    cj.load('cookies.txt', ignore_discard=False, ignore_expires=False) 
    # Rest of search 

cookielib 정보 페이지를 통해 읽었지만 여기에는 예제가 많지 않아 작동하지 못했습니다. 어떤 도움을 주시면 감사하겠습니다. 감사합니다

+0

당신의 목표는 검색 결과를 얻거나 쿠키를 저장하는 것입니까? –

답변

3

당신은 분명히, 동일한 브라우저 인스턴스를 사용해야합니다 : 이제 공통의 맥락을 가지고

def login(browser, username, password): 
    # ... 

def search(browser, searchterm): 
    # ... 

br = mechanize.Browser() 
cj = cookielib.LWPCookieJar() 
br.set_cookiejar(cj) 
cj.load('cookies.txt', ignore_discard=False, ignore_expires=False) 
login(br, "user", "pw") 
search(br, "searchterm") 

, 당신은 아마 그것의 클래스를 확인해야합니다 :

class Session(object): 
    def __init__(browser): 
    self.browser = browser 

    def login(user, password): 
    # ... can access self.browser here 

    def search(searchterm): 
    # ... can access self.browser here 

br = mechanize.Browser() 
cj = cookielib.LWPCookieJar() 
br.set_cookiejar(cj) 
cj.load('cookies.txt', ignore_discard=False, ignore_expires=False) 
session = Session(br) 
session.login("user", "pw") 
session.search("searchterm") 
3

당신이이 쿠키를 저장하기 전에 먼저 로그인하십시오.

# Cookie Jar 
    cj = cookielib.LWPCookieJar() 
    br.set_cookiejar(cj) 

    # Do the login ... 

    # Only now you have something to save: 
    cj.save('cookies.txt', ignore_discard=False, ignore_expires=False) 

편집 : 답변을 추가하기 만하면됩니다. 그 순간 나는 ignore_discard = True, ignore_expires = True로 저장과로드 방법 모두에서 옵션을 변경해야만했던 웹 사이트에서 인증을 받았습니다. 그렇지 않으면 세 개의 쿠키 중 하나만 저장되기 때문에 작동하지 않습니다. 나는 Firefox를 들여다 보았고 3 가지 쿠키를 모두 저장하고있다.