Seite 2 von 3

Verfasst: Samstag 5. Mai 2007, 16:03
von Xabyt
Die Seite "team-ulm.de/login.php" redirectet nur dann, wenn keine POST-daten vorhanden sind, denke ich. Welchen inhalt sollte denn besagtes hidden-field haben? Den des Cookies? Und wie überprüfe ich was die Header übermitteln?

Verfasst: Samstag 5. Mai 2007, 16:21
von Leonidas
Xabyt hat geschrieben:Welchen inhalt sollte denn besagtes hidden-field haben?
Den gleichen den der Browser auch schicken würde. Welcher das ist, musst du in der Form schauen.
Xabyt hat geschrieben:Und wie überprüfe ich was die Header übermitteln?
Auf ``print einbot1.headers`` zu kommen ist wirklich nicht schwer, oder?

Verfasst: Samstag 5. Mai 2007, 16:46
von Xabyt
Das hidden-feld hatte ich ja wirklich übersehen. es heißt "herkunft. Und entschuldigung, mit den headers das stimmt, aber ich dachte es wäre eine besondere, externe funktion. bei der Anweisung ``print einbot1.headers`` wird folgendes ausgegeben:

Code: Alles auswählen

Date: Sat, 05 May 2007 15:41:26 GMT

Server: Apache/2.0.54 (Debian GNU/Linux)

Connection: close

Transfer-Encoding: chunked

Content-Type: text/html; charset=utf-8
Was kann ich daraus schließen? Was bewirkt die Transfer-Encoding-Eigenschaft "chunked"?

Danke für deine Hilfe und deine Ausdauer speziell in meinem Fall.

Verfasst: Samstag 5. Mai 2007, 16:57
von Leonidas
Xabyt hat geschrieben:

Code: Alles auswählen

Date: Sat, 05 May 2007 15:41:26 GMT

Server: Apache/2.0.54 (Debian GNU/Linux)

Connection: close

Transfer-Encoding: chunked

Content-Type: text/html; charset=utf-8
Was kann ich daraus schließen?
Das keine Cookies an den CLient geschickt werden. Entweder nutzt die seite keine Cookies oder das Login ist fehlgeschlagen. Du müsstest mal sehen was ``einbot1.read()`` für eine HTML-Seite ausspuckt. Ich tippe mal auf sowas wie "Falscher Benutzername/Passwort". Vielleicht liegt es aber auch am User-Agent, dass die Seite keine Robits einloggen lässt. Dann könntest du den User-Agent fälschen, aber sie dir bewusst, dass dies dann gegen die Benutzungsrichtlinien der Seite verstossen kann.
Xabyt hat geschrieben:Was bewirkt die Transfer-Encoding-Eigenschaft "chunked"?
Ist auf der Seite HTTP/1.1 Transfer-Encoding beschrieben. Ich denke nicht, dass du dich um das Transfer-Encoding kümmern musst.

Verfasst: Samstag 5. Mai 2007, 17:19
von gerold
Hallo!

Und so gehts mit "mechanize":

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: iso-8859-15 -*-

import mechanize
import urllib


# Login
loginurl = "http://www.team-ulm.de/login.php"
logindata = urllib.urlencode(
    {
        "benutzer": "BENUTZER",
        "passwort": "PASSWORT",
        "herkunft": ""
    }
)
response = mechanize.urlopen(loginurl, logindata)
response.read() # wichtig

# Posteingang anzeigen
posteingangurl = "http://www.team-ulm.de/p_myprofile.php?show=inbox"
response = mechanize.urlopen(posteingangurl)

print response.read()
mfg
Gerold
:-)

Verfasst: Samstag 5. Mai 2007, 17:48
von Xabyt
@ Gerold:
Ich glaube ich werde das auch mit dem Modul mechanize versuchen. Ich habe es mir bereits geladen, nur das Problem ist, ich bin in meinem Python-buch noch nicht beim Kapitel über modulare Programmierung, d.h. ich weiß nicht wie man ein solches Modul installiert. ich habe es bereits über die SETUP.py probiert, scheint aber nicht zu gehen.

Verfasst: Samstag 5. Mai 2007, 17:51
von Leonidas
Xabyt hat geschrieben:ich habe es bereits über die SETUP.py probiert, scheint aber nicht zu gehen.
``python setup.py install``

Verfasst: Samstag 5. Mai 2007, 17:58
von Xabyt
Ich glaube ich muss dich falsch verstanden haben, aber wenn ich in der Shell ``python C:\mechanize-0.1.6b\mechanize-0.1.6b\setup.py install``eingebe, so wird ein syntax error ausgegeben.

Gruß,
Felix

Verfasst: Samstag 5. Mai 2007, 18:07
von gerold
Xabyt hat geschrieben:``python C:\mechanize-0.1.6b\mechanize-0.1.6b\setup.py install``
Hallo Felix!

Schade, dass du uns die Fehlermeldung nicht mitgeteilt hast. Aber wahrscheinlich findet dein Windows den Python-Interpreter nicht.
Probier's mal so: ``C:\mechanize-0.1.6b\mechanize-0.1.6b\setup.py install``. Also ohne ``python``.

Du kannst den Pfad zu Python aber auch zum Systempfad hinzufügen. Wie das geht: [wiki]FAQ#WieStarteIchSkripte[/wiki]

mfg
Gerold
:-)

Verfasst: Samstag 5. Mai 2007, 18:11
von Leonidas
Xabyt hat geschrieben:Ich glaube ich muss dich falsch verstanden haben, aber wenn ich in der Shell ``python C:\mechanize-0.1.6b\mechanize-0.1.6b\setup.py install``eingebe, so wird ein syntax error ausgegeben.
Hast du das wirklich in der Shell eingegeben oder im Python-Interpreter? (Und wenn du dich wunderst... es gibt Leute, die machen wirklich sowas)

Verfasst: Samstag 5. Mai 2007, 18:22
von gerold
Es geht aber noch viel einfacher:

Installiere dir mit "ez_setup.py" das Programm "easy_install.exe".
http://peak.telecommunity.com/DevCenter ... sy-install

Wenn "easy_install.exe" im Pfad ist, dann brauchst du nur mehr das hier eingeben:

Code: Alles auswählen

easy_install mechanize
Damit wird dir "mechanize" installiert.

Wenn easy_install nicht im Pfad ist, dann musst du natürlich den ganzen Pfad zum Programm mit angeben:

Code: Alles auswählen

C:\Python25\Scripts\easy_install.exe mechanize
Es rentiert sich, ``C:\Python25\Scripts\`` im Pfad zu haben. Auch für später.

Mit easy_install kannst du sehr viele Python-Module installieren. Welche das sind, siehst du hier: http://python.org/pypi
Alle Module, für die es eine "*.egg"-Datei gibt, lassen sich damit installieren.

mfg
Gerold
:-)

Verfasst: Samstag 5. Mai 2007, 18:34
von Leonidas
gerold hat geschrieben:Alle Module, für die es eine "*.egg"-Datei gibt, lassen sich damit installieren.
Nein, es ist sogar noch besser. easy_install kann jegliche Art von Tarballs in denen es Distutils-Skripte gibt automatisch runterladen, entpacken, zu Eggs bauen und dann installieren.

Verfasst: Samstag 5. Mai 2007, 19:02
von Xabyt
Hallo,
es wird folgende Fehlermeldung ausgegeben:

Code: Alles auswählen

>>> C:\mechanize-0.1.6b\mechanize-0.1.6b\setup.py install
SyntaxError: invalid syntax
Der Doppelpunkt wird rot hinterlegt.
Woran kann das liegen?

Verfasst: Samstag 5. Mai 2007, 19:11
von Leonidas
Xabyt hat geschrieben:Woran kann das liegen?
Du gibt den Code in den Python-Interpreter ein (so wie ich es schon vermutet habe). Dieser versucht das natürlich als Python-Quelltext zu verarbeiten, was nicht funktioniert. Du musst es in der Shell (Eingabeaufforderung eingeben), also das Ding wo man Shellbefehle absetzt. Das wo der Python-Interpreter normalerweise mit dem Aufruf ``python`` gestartet wird.

Verfasst: Samstag 5. Mai 2007, 19:33
von Xabyt
Das ist mir ja ein wenig peinlich, nur ist es irreführend, dass diese Anwendung doch als "Python Shell" bezeichnet wird. Diese Anwendung wird in meinem Buch als Python-Shell bezeichnet. Ich starte diese vermeintlich shell über die IDLE, aber in der Taskleiste wird sie als Python Shell bezeichnet. Ich finde die richtige Shell nicht!

Verfasst: Samstag 5. Mai 2007, 19:52
von Leonidas
Xabyt hat geschrieben:Das ist mir ja ein wenig peinlich, nur ist es irreführend, dass diese Anwendung doch als "Python Shell" bezeichnet wird.
Stimmt. Das ist die Interaktive Python Shell, also der Interpreter.
Xabyt hat geschrieben:Diese Anwendung wird in meinem Buch als Python-Shell bezeichnet.
Ich meinte aber die System-Shell, also das was es schon viel, viel länger als Python gibt.

Wie man so eine Shell, oder in Windows-Deutsch Eingabeaufforderung (oder auch einfach Konsole) bekommt, steht zum Beispiel in diesem Rubyforen-Thread beschrieben. Ich schriebe das jetzt nocht nochmal auf, der Thread ist ausreichend gut. Alternativ kannst du dir auch die [wiki]FAQ#WieStarteIchSkripte[/wiki] ansehen, dort ist as auch noch haarklein erklärt wie man sie einrichtet.

Die Shell ist vor allem auch zum Programmieren ein sehr nürliches Ding. Ich habe dort den verbesserten Interpreter IPython laufen, Bazaar, sogar mein Editor läuft in der Shell, weil es für mich einfach praktischer ist, als einen grafischen Editor ala IDLE zu verwenden.

Verfasst: Samstag 5. Mai 2007, 20:11
von Xabyt
Ach du meintest die CMD. So, jetzt stehe ich aber vor dem nächsten Problem. Es werden zwar einige Schritte wie "running install" angezeigt, nach dem Schritt "writing dependency_links to mechanize (...)" kommt plötzlich ein error, welcher sich darüber beklagt, dass eine unwahrscheinlich lange Datei in einem Spiele-ordner (!), um genau zu sein Battlefield 2142, nicht vorhanden sei. Meine Frage ist jetzt, was hat diese Datei in diesem Spiele-ordner mit mechanize zu tun? Ich hänge einen Screen an:

Bild[/url]

Verfasst: Samstag 5. Mai 2007, 20:22
von Leonidas
Xabyt hat geschrieben:nach dem Schritt "writing dependency_links to mechanize (...)" kommt plötzlich ein error, welcher sich darüber beklagt, dass eine unwahrscheinlich lange Datei in einem Spiele-ordner (!), um genau zu sein Battlefield 2142, nicht vorhanden sei. Meine Frage ist jetzt, was hat diese Datei in diesem Spiele-ordner mit mechanize zu tun?
Wow, gute Frage. Scheint ein sehr, sehr seltsamer Fehler in ``setuptools`` zu sein. Dann machen wir es anders, manuell. Auch kein Problem.
Im ``mechanize-0.1.6b``-Ordner gibt es einen Ordner Namens ``mechanize``. Diesen kopierst du in den ``site-packages``-Ordner deiner Python-Installation (der ist normalerweise immer in DER_ORDNER_WO_PYTHON_INSTALLIERT_IST\Lib\site-packages).

Damit sollte dann auch ein ``import mechanize`` klappen.

(P.S. Ich komme aus einer Zeit wo das was zu CMD nennst noch command.com hieß. Inzwischen nutze ich aber eher FreeCOM und bash)

Verfasst: Samstag 5. Mai 2007, 20:59
von Xabyt
Ich scheine verflucht zu sein: Nun beschwert sich IDLE, dass das Modul Clientform nicht da ist, hab es runtergeladen, wieder mit CMD versucht, klappt wieder nicht. Wie mache ich es diesmal auf die "altmodische Weise"? Ich habe den Link von Gerold benutzt.

Verfasst: Samstag 5. Mai 2007, 21:10
von Leonidas
Xabyt hat geschrieben:Wie mache ich es diesmal auf die "altmodische Weise"?
Habe ich doch geschrieben :?:

Ah, irgendwie habe ich das Gefühl, dass Battlefield 2142 seinen eigenen Python-Interpreter mitbringt. Kann das sein?