ClientForm mit HTML betanken

Ich benötigte Informationen aus einem Formular einer Website. Dazu kann man wunderbar ClientForm verwenden. Doch ClientForm will entweder eine Datei oder den Response der urllib2. Doch ich hatte schon den Inhalt der Seite. Und da ich keinen weiteren Response erzeugen wollte habe ich mir einfach mit der Klasse TemporaryFile aus dem Modul tempfile geholfen:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
from ClientForm import ParseFile
import tempfile

# ...
# der ganze response/request-spass ist schon passiert
# die variable html existiert, ist ein string und enthält die ganze website


f = tempfile.TemporaryFile()
f.write(html)
# wichtig... zum den zeiger im tempfile wieder auf 0 setzten, sonst kann clientform das nicht
# korrekt parsen
f.seek(0)
forms =  ParseFile(f, '')
print forms
f.close()

Das angenehme an TemporaryFile, wenn der Zugriff mittels close() beendet wird, wird auch die Datei dahinter gelöscht. Man muss also nicht mal mehr den Müll rausbringen :)

Tags: , ,

2 Reaktionen zu “ClientForm mit HTML betanken”

  1. wo kann ich

    “Und da ich keinen weiteren Response erzeugen wollte habe ich mir einfach mit der Klasse TemporaryFile aus dem Modul tempfile…” – was meinst du damit?

  2. Butters

    Der Request war schon abgehandelt. Ich wollte einfach keinen weiteren erzeugen bzw. konnte das in dem Programmkontext nicht. Einer ist genug :)

Einen Kommentar schreiben