bei geocaching.com einloggen
Verfasst: Sonntag 8. November 2009, 18:14
Ich versuche gerade Infos von geocaching.com runter zu laden. Dazu muss ich mich jedoch erstmal einloggen (bzw den Cookie dazu hohlen). Normalerweise sollte das kein Problem sein, doch die Form beinhaltet so ne Art "Session ID". Ich lade also zuerst die Login Form um den Session Cookie und die "Session ID" zu empfangen und sende diese dann ab. Doch irgendwie klappt das nicht, obwohl die Daten richtig gesendet werden. Ich programmiere noch nicht so lange mit Python. Hier mein bisheriger Code:
Jemand ne Idee wo mein Fehler liegt? Das "return content2" ist natürlich nur zum debuggen. Wenn das klappt, wird der cookie zurück gegeben.
Code: Alles auswählen
#!/usr/bin/env python
import urllib2
import urllib
user_agent = 'Opera 9.7 (Windows NT 5.2; U; en)'
def getcontent(url,returnheader=False,cookie=None,postdata=None):
if cookie == None:
header = {'User-Agent' : user_agent}
else:
header = {'User-Agent' : user_agent, 'Cookie ' : cookie}
req = urllib2.Request(url,postdata,header)
response = urllib2.urlopen(req)
if returnheader == False:
return response.read()
else:
return (response.read(),response.info())
def getcookie(user,passwd):
content1 = getcontent('http://www.geocaching.com/login/default.aspx',True)
cookie=content1[1]['set-cookie'].split(';')[0]
pos1 = content1[0].find('id="__VIEWSTATE" value="')
pos2 = content1[0][pos1+24:].find('"')
VIEWSTATE = content1[0][pos1+24:pos1+24+pos2]
args = urllib.urlencode({'__EVENTTARGET': '','__EVENTARGUMENT': '','__VIEWSTATE': VIEWSTATE,'ctl00$ContentBody$4myUsername': user, 'ctl00$ContentBody$myPassword': passwd, 'ctl00$ContentBody$cookie': 'on', 'ctl00$ContentBody$Button1': 'Login'})
content2 = getcontent('http://www.geocaching.com/login/default.aspx',True,cookie,args)
return content2