login auf webseite (cookies weiterhin nutzen)

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
Sunjy
User
Beiträge: 31
Registriert: Dienstag 3. März 2009, 19:13
Wohnort: 127.0.0.1
Kontaktdaten:

Dienstag 31. März 2009, 15:19

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
Mad-Marty
User
Beiträge: 317
Registriert: Mittwoch 18. Januar 2006, 19:46

Dienstag 31. März 2009, 15:34

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.
Benutzeravatar
snafu
User
Beiträge: 5440
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Dienstag 31. März 2009, 15:34

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? :)
shcol (Repo | Doc | PyPi)
Benutzeravatar
Sunjy
User
Beiträge: 31
Registriert: Dienstag 3. März 2009, 19:13
Wohnort: 127.0.0.1
Kontaktdaten:

Dienstag 31. März 2009, 15:45

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
Benutzeravatar
snafu
User
Beiträge: 5440
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Dienstag 31. März 2009, 19:22

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. ;)
shcol (Repo | Doc | PyPi)
Benutzeravatar
Sunjy
User
Beiträge: 31
Registriert: Dienstag 3. März 2009, 19:13
Wohnort: 127.0.0.1
Kontaktdaten:

Mittwoch 1. April 2009, 22:01

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
Antworten