Seite 1 von 1

login auf webseite (cookies weiterhin nutzen)

Verfasst: Dienstag 31. März 2009, 15:19
von Sunjy
Hallo,
wie aus dem Titel schon hervorgeht brauche ich Hilfe beim Schreiben eines Programms, welches mich auf einer Seite einloggt und das Cookie verwendet für die nächsten Seiten welche ich aufrufe (per Python).
Mit mechanize geht es nicht, ich habe mal ein Stück eines Programms kopiert, welches dies übernehmen sollte und es kam ein Error zurück, von wegen Login von Robotern wäre verboten. Ist aber auch egal, ich möchte es sowieso ohne mechanize.

Also oben hab Ichs in Kurzform und hier erklär ich nochmal genauer was ich vor habe:
1. Das Programm soll sich auf der Webseite einloggen mit meinem username und password.
2. mit dem Cookie muss irgendwas gemacht werden (hier hab ich leider absolut null Ahnung, aber ich vermut mal dass es gespeichert werden müsste oder so ?!)
3. nach dem Login wird eine andere Website aufgerufen die voraussetzt, dass ich eingeloggt bin (beim Aufruf der Seite Cookie übergeben ?)
4. der Quelltext soll ausgelesen und in einer Variable gespeichert werden
(5. Wenn ich jetzt auf ein Bild gehe (http://.../bla.jpg) wie kann ich das dann "einlesen", damit Ichs (binär?) in eine Datei schreiben kann?)

Ich würde ja gerne meinen bisherigen Quelltext vorweisen, aber der ging mir leider verloren -.- ich dachte ich arbeite mit einer Kopie, aber ich hatte keine .... Wie dem auch sei, das (alte) Programm wäre eh nur funktionstüchtig, wenn es dieses Login-Problem nicht gäbe.

bisher habe ich für solche Webseiten-dinge immer die urllib2 benutzt, kann ich dies hier auch oder brauch ich eine andere, bzw. kann mir wer bei den oben erwähnten Punkten helfen ? Das wäre super.

Ich sollte wohl noch erwähnen, dass ich mich in Python noch nicht super auskenne, allerdings kann ich die Grundlagen.

Danke schon mal im Voraus.
MfG
Sunjy

Verfasst: Dienstag 31. März 2009, 15:34
von Mad-Marty
Hi,

ja du brauchst die urllib2 dafür.
Schau dir an, wie du einen neuen opener erzeugst.
Der opener braucht den HTTPCookieProcessor und ein CookieJar aus der cookielib.

Verfasst: Dienstag 31. März 2009, 15:34
von snafu
Wenn Robots verboten sind, hat man 2 Möglichkeiten: Man respektiert es oder man stellt die entsprechende Option in `mechanize` um.
Sunjy hat geschrieben:Ist aber auch egal, ich möchte es sowieso ohne mechanize.
Warum? Hast du etwa zuviel Langeweile? :)

Verfasst: Dienstag 31. März 2009, 15:45
von Sunjy
snafu hat geschrieben:Wenn Robots verboten sind, hat man 2 Möglichkeiten: Man respektiert es oder man stellt die entsprechende Option in `mechanize` um.
weis ich eben nicht wie.
snafu hat geschrieben:
Sunjy hat geschrieben:Ist aber auch egal, ich möchte es sowieso ohne mechanize.
Warum? Hast du etwa zuviel Langeweile? :)
Gewiss nicht, aber interessiert es dich nicht was "Hinter dem Vorhang" abläuft ? ;)
Ok, ich würde es denk ich schon mit mechanize machen, aber dazu müsste ich erstens wissen wie es das umstelle und zweitens, würde mich trotzdem interessieren, wie es ohne ginge ^^.

Vielleicht kannst du mir ja grad sagen was ich dazu tun müsst ums mit mechanize zu machen. Problem bei dem Login-Teil, das ich von mechanize bereits hatte war einfach, dass ich nicht wusste was es tut, bzw. was die einzelnen befehle tun und wie sie im Zusammenhang stehen, es ging einfach (nicht, wegen dem robots teil).

Bin jetzt erstmal ein Weilchen afk. Melde mich dann heute Abend nochmal.

Für weitere Antworten bin ich dankbar ^^.
Sunjy

Verfasst: Dienstag 31. März 2009, 19:22
von snafu
Es gibt dazu einen Punkt in den Beispielen. Einfach mal nach "robots" Ausschau halten...
Sunjy hat geschrieben:interessiert es dich nicht was "Hinter dem Vorhang" abläuft ? ;)
Schon öfter mal. Aber wenn ich ein Problem habe, versuche ich zunächst, es auf dem bestmöglichsten Weg zu lösen. Und der liegt sicher nicht daran, Teile eines bewährten Tools neu zu implementieren. ;)

Verfasst: Mittwoch 1. April 2009, 22:01
von Sunjy
okay ich habs nun ohne mechanize hinbekommen:

zum login benutz ich folgendes:

Code: Alles auswählen

import urllib2
import cookielib
import urllib

def login(loginurl, usrname, pw):
    cj = cookielib.CookieJar()
    opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))

    values = {'username':usrname, 'password':pw }
    data = urllib.urlencode(values)
    request = urllib2.Request(loginurl, data)
    url = opener.open(request)
    urllib2.install_opener(opener) 
danach kann man ganz bequem die webseite mit urlopen(link) durchforsten:

Code: Alles auswählen

quelltext = urllib2.urlopen(link).read()
/edit: es mag vielleicht den ein oder anderen verwirren, das url im zweiten codefenster ist NICHT das url aus dem ersten... ich benenns mal um in link

mfg
Sunjy