Hilfe beim Login mit Python

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
IGnoXX
User
Beiträge: 15
Registriert: Sonntag 12. Oktober 2014, 19:03

Hallo zusammen!
Ich möchte gerne ein skript schreiben welches sich auf eine Website einloggt , den Server auswählt und anschließend den Premiumpunkte wert ausliest und es ausgibt oder in eine Datei Speichert.

So nach etwas suche bin ich auf machnize gestoßen. Dieses modul eigent sich gut für mein Vorhaben(einige werden es sicher kennen ;) ).

Ich bin nun soweit gekommen dass ich die Website aufrufe(http://www.die-staemme.de) , das formular zum login ausfülle, und anschließendauf Login(submit) klicke.

Dannach kommt eine Serverauswahl. Und das ist mein knackpunkt.. Da ist ein Button mit dem Server namen drauf und ruft eine JS funktion auf nach dem klicken .

Ich hab bereits gelesen das mechanize kein JS unterstützt und man selber den link(oder was auch immer) finden muss um auf die seite zu kommen..

Hat einer von euch eine idee wie ich das lösen kann? :?

Skript:

Code: Alles auswählen

import mechanize
import cookielib
from bs4 import BeautifulSoup as bs

#Browser
br = mechanize.Browser(factory=mechanize.RobustFactory())

#Cookie Jar
cj = cookielib.LWPCookieJar()
br.set_cookiejar(cj)

#Browser Options
br.set_handle_equiv(True)
#br.set_handle_gzip(True)
br.set_handle_redirect(True)
br.set_handle_referer(True)
br.set_handle_robots(False)

# Follows refresh 0 but not hangs on refresh > 0
br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1)


# User-Agent (this is cheating, ok?)
br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')]

USERNAME = 'IGnoXX'
PASSWORD = '12345'

FORM_NAME = 'login_form'
FORM_USER = 'user'
FORM_PASS = 'password'

website = br.open("https://www.die-staemme.de")
website_html = website.read()

#Select the Form
br.select_form(nr=0)

#Let's login
br.form[FORM_USER] = USERNAME
br.form[FORM_PASS] = PASSWORD
website = br.submit() #Press Login
print website.read()
^Sorry das der gesamte code grün ist.. ich weiß nicht wie man es ganz normal anzeigen lässt..

Danke im Vorraus!
-IGnoXX
Zuletzt geändert von Anonymous am Donnerstag 19. November 2015, 16:33, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
BlackJack

@IGnoXX: Du müsstest Dir mit einem Browser und entsprechenden Plugins (oder bereits eingebauten Funktionen) herausfinden was da passiert wenn man auf die Schaltfläche klickt. Ich verwende Firefox und das Firebug-Plugin für so etwas. Da sieht man dann das nur ein bereits auf der Webseite vorhandenes aber nicht angezeigtes <div> aktiviert wird. Und wenn man dort hinein schaut dann sieht man ein Formular für den konkreten Server, und auch wieder JavaScript. Ich glaube hier würde ich auf mechanize verzichten und lieber `requests` für die Kommunikation mit den Servern verwenden und mir die Kommunikation zwischen Browser und Server anschauen und das manuell nachbauen.

Also wenn ich denn unbedingt gegen die Geschäftsbedingungen von einer Webseite verstossen wollen würde…
IGnoXX
User
Beiträge: 15
Registriert: Sonntag 12. Oktober 2014, 19:03

Danke, werde mir mal requests anschauen in python :)
IGnoXX
User
Beiträge: 15
Registriert: Sonntag 12. Oktober 2014, 19:03

Ok hab alles hinbekommen was ich wolte :D Hab dazu die request libary benutzt :)

Danke nochmal ;)
Antworten