Mit Python auf eine Website zugreifen

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
Teabag
User
Beiträge: 81
Registriert: Sonntag 13. Mai 2007, 20:44

Dienstag 13. Mai 2008, 16:44

Hallo,
Ich hätte da mal eine Frage, wie geht denn python auf eine Website wenn ich sie folgendermaßen sozusagen öffne?:

Code: Alles auswählen

 loginurl = "url"
        logindata = urllib.urlencode(
            {
                "username": "user",
                "kennwort": "pw",
                "submitButtonName": "Login",
                "autologin": "ja"
            }
        )
        response = mechanize.urlopen(loginurl, logindata)
        response.read() # wichtig
        klick4winurl = "url"
        response = mechanize.urlopen(klick4winurl)
        #schreibe den htmloutput in eine Datei,
        #damit man das Ergebniss anschauen kann
        text = file("output.txt","w")
        text.write(response.read())
        text.close()
Ich logge mich mit diesem Script auf einer Seite ein, gehe dann auf eine Seite im Login Bereich und speichere dessen Queltext ab.
Nun ist es so, dass wenn ich mit dem firefox oder dem IE auf die seite gehe (von der der Quellcode gespeichert wurde), dass dann nach 30 Sekunden Daten an eine Datenbank gesendet werden.
Nun wollte ich wissen, ob dies auch geschiet wenn ich mit python auf die seite gehe.. wie oben beschrieben?

Code: Alles auswählen

response = mechanize.urlopen(klick4winurl)
Wie lange ist denn der Python script auf der Seite?
Werden die Daten dann auch nach 30 sec gesendet?
Schon mal Danke.

Gruß Teabag
Benutzeravatar
keppla
User
Beiträge: 483
Registriert: Montag 31. Oktober 2005, 00:12

Dienstag 13. Mai 2008, 17:54

Teabag hat geschrieben:Nun ist es so, dass wenn ich mit dem firefox oder dem IE auf die seite gehe (von der der Quellcode gespeichert wurde), dass dann nach 30 Sekunden Daten an eine Datenbank gesendet werden.
Http ist ein zustandsloses Protokoll, d.H. du bist nicht "30 Skunden auf einer Seite", sondern du fragst eine Seite an (http request) und bekommst eine Antwort (http-response).

Möglichkeiten für diese 30 Sekunden wären erstens ein javascript-redirect nach 30 sekunden, der - http-mäßig - auch nur eine weitere Anfrage wäre. Wenn dies der Fall ist, müsstest du die Antwort nach der URL durchsuchen (die, wenn es so eine "sie haben gewonnen"-betrügerei ist, wie es aussieht, sicher ziemlich "obfuscated" sein wird) und diese Anfragen.
Eine andere Möglichkeit wäre, dass du einen http-Request stellst, und die http-Response 30 sekunden dauert, wobei sie dir zunächst "fast alles" sendet, und nach 30 sek den Rest. Da dein Browser schon zu Rendern anfängt, wenn die Seite noch nicht fertig ist, siehst du eine vollständige Seite.
Unter PHP hab ich mal Fortschrittsbalken gesehen, die so funktioniert haben.

In beiden Fällen solltest du beachten, dass du vielleicht diverse header setzen musst, damit dir die Seite auch Antworten liefert (weil sie vielleicht keine Automatisierung wollen ;) ). Einfallen würden da der "User-Agent"-header und cookies (vmtl von mechanize beachtet, ich kenn das progg nicht)
Antworten