Hi,
hab ein kleines Problem, ich lade mir per urllib eine Webseite in eine Textdatei, in dieser Textdatei soll alles gelöscht werden bis auf den Bereich von <textarea> bis </textarea>!
Welchen Befehl brauch ich?
Hab mir schon mal re angeschaut, aber da finde ich nichts passendes?!
MfG
Bestimmten Bereich aus HTML auslesen?
-
- User
- Beiträge: 996
- Registriert: Mittwoch 9. Januar 2008, 13:48
Code: Alles auswählen
import re
re.findall('<textarea.+?>.+?</textarea>', deinhtml)
-
- User
- Beiträge: 996
- Registriert: Mittwoch 9. Januar 2008, 13:48
Das hat er aber nicht erzählt :P
@Leonidas
Das wär erst mal egal
@Dauerbaustelle, cofi
Danke, aber ich bekomm (re.findall) immer folgenden Error:
http://codepad.org/AQ0knMBO
http://codepad.org/BCFsUQdD
(Da geht noch einiges net, aber mir geht es erstmal um die geposteten Fehler!)
MfG
Das wär erst mal egal
@Dauerbaustelle, cofi
Danke, aber ich bekomm (re.findall) immer folgenden Error:
Hier der Code:Traceback (most recent call last):
File "", line 22, in onOeffnen
re.findall('<textarea.+?>.+?</textarea>', liste)
File "", line 175, in findall
return _compile(pattern, flags).findall(string)
TypeError: expected string or buffer
Traceback (most recent call last):
File ", line 22, in onOeffnen
re.findall('<textarea.+?>.+?</textarea>', liste)
File "", line 175, in findall
return _compile(pattern, flags).findall(string)
TypeError: expected string or buffer
http://codepad.org/AQ0knMBO
http://codepad.org/BCFsUQdD
(Da geht noch einiges net, aber mir geht es erstmal um die geposteten Fehler!)
MfG
Das macht die Verwendung regulärer Ausdrücke nicht besser ...Dauerbaustelle hat geschrieben:Das hat er aber nicht erzählt
@Echoplex
Ich würde dir raten, das Programm erstmal ohne GUI umzusetzen. Dein Code enthält nämlich noch einige Fehler, die mich vermuten lassen, dass du dich mit Python noch nicht gut genug auskennst, um vernünftigen GUI-Code programmieren zu können.
Zum einen ist dir offenbar nicht mal bewusst, dass ein Methodenaufruf Klammern erfordert. An zwei Stellen hast du diese nämlich vergessen, weder "DLListe.clear()" noch "datei.close()" werden aufgerufen. Letzteres führt zum nächsten Punkt: Fehlende Ausnahmebehandlung. Tritt ein Fehler auf, so wird die Datei nicht korrekt geschlossen.
Der Fehler bei ".findall" ist ein Typfehler. Die Funktion erwartet eine Zeichenkette, du aber übergibst ein Datei-ähnliches Objekt, welches von "urllib2.urlopen" zurückgegeben wurde.
Ich denke, du solltest dir erstmal sowohl das Python-Tutorial als auch die Dokumentation der verwendeten Funktionen genau durchlesen sowie den interaktiven Interpreter kennen lernen, bevor du dich an eine GUI oder etwas komplexere Aufgaben wie HTML-Parsing wagst. Momentan sieht das nämlich alles mehr nach "Programming by accident" als nach einem gut überlegten, durchdachten Lösungsansatz aus. Nichts für ungut ...
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Was urlopen zurückliefert, ist nunmal kein String.
Versuch mal das in einen String zu konvertieren -> `str(urlopen(...))' bzw
`urlopen(...).decode(insert_codec_here)'
Ersteres wenn es nur ASCII ist, letzteres wenn du Sonderzeichen hast.
P.S. Etwas das keine Liste ist `liste' zu nennen ist ziemlich verwirrend.
Versuch mal das in einen String zu konvertieren -> `str(urlopen(...))' bzw
`urlopen(...).decode(insert_codec_here)'
Ersteres wenn es nur ASCII ist, letzteres wenn du Sonderzeichen hast.
P.S. Etwas das keine Liste ist `liste' zu nennen ist ziemlich verwirrend.
Danke für die Steilvorlage ...
Genau das meine ich mit "programming by accident": Einfach mal ohne Sinn und Verstand wild drauflos probierend und mal irgendwas "versuchen", anstatt die Dokumentation zu lesen und anschließend zu überlegen, was "file-like object" bedeutet und wie man daraus eine Zeichenkette extrahiert ...
Genau das meine ich mit "programming by accident": Einfach mal ohne Sinn und Verstand wild drauflos probierend und mal irgendwas "versuchen", anstatt die Dokumentation zu lesen und anschließend zu überlegen, was "file-like object" bedeutet und wie man daraus eine Zeichenkette extrahiert ...
-
- User
- Beiträge: 996
- Registriert: Mittwoch 9. Januar 2008, 13:48
@lunar: Ich denke, man kann sich das Zeugs auch aneignen, wenn man überhaupt keine Erfahrung hat, ich zB habe einfach mit einem GTK2-Tutorial auf Englisch angefangen und die Codeschnipsel abgeschrieben und kanns heute trotzdem...
Ich habe nichts gegen die Wahl von Qt, im Gegenteil, für GUIs ist das meiner Meinung nach die beste Wahl Wenn du mit GUI-Entwicklung besser zurecht kommst, dann wäre es auch falsch, etwas anderes zu tun.Echoplex hat geschrieben:Kenne Qt halt schon von C++, da hab ich mir halt gedacht ich könnte es gleich verwenden
Allerdings zeigt dein Code eben, dass dir noch ein paar Python-Grundlagen fehlen. Meiner Erfahrung nach lernt man die besser, wenn man sich erstmal auf die Sprache selbst konzentriert anstatt nebenbei auch noch mit dem GUI-Framework zu arbeiten. Das geht dann halt am besten in einer einfachen Konsolenanwendung.
Zudem ist es nicht schwer, eine GUI zu implementieren, wenn man die Logik gut gekapselt hat.