ich versuche, mich mit urllib2 und cookielib (python 2.6) bei einer Webseite anzumelden (https). In einem anderen Skript habe ich das hinbekommen, der einzige Unterschied ist der, dass in diesem anderen Skript ein Proxy verwendet wird und ich für das aktuelle Skript keinen Proxy verwenden will.
Ein Objekt, das für mich die Interaktion mit der Webseite machen soll, hat dazu diesen Konstruktor und eine Methode, um mir die Seiten zu laden (und dabei ggf. mit POST umzugehen und auch gleich das HTML zu parsen):
Code: Alles auswählen
import urllib,urllib2,cookielib
[...]
def __init__(self):
cj=cookielib.CookieJar
self.opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
print "init done"
def getPage(self,url,post=None):
"""Load a given page with optional POST values."""
if post is not None:
postdata=urllib.urlencode(post)
sock=self.opener.open(url,postdata)
else:
sock=self.opener.open(url)
print "opened"
page=sock.read()
[...]
Nun zu meinem Problem:
Wenn ich das Skript ausführe, erhalte ich folgenden Fehler:
Wenn ich jedoch die Python-Konsole nehme und das Fragment aus dem Post abtippe (das ist identisch zu meinem Code, jedoch ohne Klassenstruktur, POST und self), funktioniert es tadellos (ob der Login geklappt hat, habe ich nicht überprüft, es kam zumindest HTML zurück).Traceback [...]
sock=self.opener.open(url,postdata)
File "C:\python26\lib\urllib2.py", line 389 in open
req=meth(req)
File "C:\python26\lib\urllib2.py", line 1181 in http_request
self.cookiejar.add_cookie_header(request)
TypeError: unbound method add_cookie_header() must be called with CookieJar instance as first argument (gut Request instance instead)
Mit Google habe ich nichts bezüglich der Fehlermeldung finden können und sämtliches herumdoktern hat mir nicht weitergeholfen.
Woran kann der Fehler liegen und was habe ich falsch gemacht?