ich versuche mich gerade damit, mich ein wenig mit Mechanize und BeautifulSoup vertraut zu machen. Was habe ich vor? Nun, ich habe auf meinem WebServer ein PHP-Script für die Registrierung. Mit diesen beiden eben genannten Bibliotheken versuche ich mich dort einzutragen. Jedoch versuche ich mit Absicht Fehler herbeizuführen, so dass ich von Seiten PHP Fehlermeldungen bekomme, zum Beispiel dass der Benutzername existiert, Passwort zu kurz sei etc. Kurz: Ich möchte mit BeautifulSoup den spezifischen Text, in welcher die Fehlermeldungen enthalten sind zu extrahieren.
Um Fehler herbeizuführen, fülle ich die raw_inputs wie folgt aus:
Die oben genannten Eingaben sind also mit Absicht fehlerhaft, damit ich von PHP aus Fehlermeldungen bekomme, die dann wie folgt aussehen würden:Name: dd
EMail: dd
Password: dd
Password Confirm: dd
ICQ: dd
Und genau diese Informationen möchte ich auslesen, und habe versucht dies wie folgt umzusetzen:Ihr Benutzername muss mindestens 3 Zeichen enthalten!
Ihr Passwort muss mindestens 3 Zeichen enthalten!
Sie haben eine ungueltige E-Mail angegeben!
Sie muessen das Feld PrivateKey erst ausfuellen!
Sie muessen das Feld ProgramName erst ausfuellen!
Code: Alles auswählen
from mechanize import Browser
from BeautifulSoup import BeautifulSoup
url ="http://xarphus.de/example.php"
br = Browser()
br.set_handle_robots(False)
br.open(url)
name = raw_input("Name: ")
email = raw_input("EMail: ")
password = raw_input("Password: ")
password_confirm = raw_input("Password Confirm: ")
icq_id = raw_input("ICQ: ")
br.select_form(nr=1)
br.form["uname"] = name
br.form["email"] = email
br.form["pass"] = password
br.form["pass2"] = password_confirm
br.form["icq"] = icq_id
response = br.submit()
soup = BeautifulSoup(response.read())
print soup.select('html body table tbody tr td div table tbody tr td table tbody tr td div p').text
Führe ich den oben genannten Quelltext aus, erhalte ich folgende Fehlermeldung:
Traceback (most recent call last):
File "D:\Dan\Python\Übung\login_mechanize.py", line 25, in <module>
print soup.select('html body table tbody tr td div table tbody tr td table tbody tr td div p').text
TypeError: 'NoneType' object is not callable