2012-03-19 8 views
1

저는 파이썬 기계화를 사용하여 iTunes 연결에서 애플 리케이션 목록을 검색하려고합니다. 이 목록이 검색되면 해당 링크로 추가 작업이 수행됩니다.파이썬 기계화 세션이 저장되지 않았습니다.

로그인이 성공했지만 "애플리케이션 관리"링크를 따라 가면 다시 로그인 페이지로 리디렉션됩니다. 마치 세션이 손실 된 것처럼 보입니다.

import mechanize 
import cookielib 
from BeautifulSoup import BeautifulSoup 
import html2text 

filename = 'itunes.html' 

br = mechanize.Browser() 
cj = cookielib.LWPCookieJar() 
br.set_cookiejar(cj) 

br.set_handle_equiv(True) 
br.set_handle_redirect(True) 
br.set_handle_referer(True) 
br.set_handle_robots(False) 

br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1) 

br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')] 

br.open('https://itunesconnect.apple.com/WebObjects/iTunesConnect.woa') 
br.select_form(name='appleConnectForm') 
br.form['theAccountName'] = username 
br.form['theAccountPW'] = password 

br.submit() 

apps_link = br.find_link(text='Manage Your Applications') 
print "Manage Your Apps link = ", apps_link 
req = br.follow_link(text='Manage Your Applications') 

for app_link in br.links(): 
    print "link is ", app_link 

어떤 아이디어가 잘못되었을 수 있습니까?

답변

0

save/load해야합니다. 이것은 여기에 문서화 된 cookielib의 알려진 버그로 인한 것입니다 : http://bugs.python.org/issue3924

기본적으로 일부 사이트 (특히 itunesconnect)는 쿠키 버전을 int가 아닌 문자열로 설정합니다. cookielib은 해당 조건을 처리하지 않기 때문에 오류가 발생합니다. 그 문제 스레드의 하단에있는 수정이 나를 위해 일했습니다.

0

당신은 추가 조사 후이 알아 낸 cookiejar

+0

언제 쿠키 항아리를 저장 /로드해야합니까? – Inn0vative1

+0

파일을 생성 한 후 곧바로로드하고 프로그램을 종료 할 때 저장하십시오. –

+0

파일을 처음 실행하면 파일이 존재하지 않으므로로드가 실패하므로 try/except를 사용하려고 할 수 있습니다. –

관련 문제