Im Standardbrowser geöffnete dynamische Website einlesen

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
Tilo81
User
Beiträge: 2
Registriert: Dienstag 29. März 2011, 04:19

Hallo,
ich entdecke seit kurzem eifrig und relativ erfolgreich (zumindest funktionierte bisher alles nach einigem recherchieren irgendwann :wink:) Python, habe aber nun ein Problem, bei dem ich feststecke.

bisher:

Code: Alles auswählen

os.startfile("http://www.openstreetmap.org/export")
dort kann durch klicken auf die blaue Schrift unter den Koordinaten ein Kasten auf der Karte gezeichnet werden. Die Koordinaten des Kastens werden dann übernommen. Mein Programm öffnet nach der Website ein guifenster mit vier Feldern, in die der User dann manuell die Koordinaten einfügen und bestätigen muß.
Um das ganze etwas userfreundlicher zu machen, würde ich gerne auf die website im Browser nach Erstellung des Kastens zugreifen und die Koordinaten auslesen und dem user zur Bestätigung anbieten.

Hiermit kann ich zwar den Code lesen und finde auch die Koordinaten in der Liste, diese sind jedoch glaube ich immer die defaultkoordinaten.

Code: Alles auswählen

sock = urllib.urlopen("http://www.openstreetmap.org/export")
htmlSource = sock.read()                            
sock.close()
Es würde mich sehr freuen, wenn mir jemand nen Tipp geben könnte, wie ich eine momentan geöffnete Website im momentanen Zustand einlesen könnte. (Muß am Ende mit IE und Firefox funktionieren)

Gruß Tilo
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Wenn du die Seite mittels JavaScript oder anderen programmiertechnischen Mitteln steuern kannst, dann empfehle ich die Nutzung von Webkit. Das ist eine Browser-Engine, für die es Python-Anbindungen sowohl für das Qt- als auch für das Gtk-Toolkit gibt. Und wenn du eh schon eine grafische Oberfläche entworfen hast, dann dürfte dies auch nicht allzu viel Overhead für dein Programm bzw dessen Abhängigkeiten erzeugen. Du veränderst halt die Seite und liest in diesem Zustand dann den generierten Code der Seite aus. Für Details schmeißt du am Besten mal die Suche an.

Für die Steuerung von Firefox gibt es außerdem noch XPCOM. Auch dafür existiert ein Python-Interface. Für IE müsstest du mal gucken, ob es sowas gibt (würde mich wundern, wenn nicht). Der Nachteil daran wäre allerdings, dass du dich um die Nutzung beider Tools kümmern musst, während die erstgenannte Variante dir gleiche Ergebnisse bei gleichem Code auf jeder unterstützten Plattform garantiert.
Tilo81
User
Beiträge: 2
Registriert: Dienstag 29. März 2011, 04:19

Vielen Dank für die Antwort snafu,

ersteres macht auf jeden Fall wegen der Browserunabhängigkeit wesentlich mehr Sinn als zweiteres. Zum Verständnis: Ich würde mir mit webkit einen kleinen integrierten Browser basteln dessen Inhalt ich dann flexibel auslesen würde?

Dieses Projekt ist sehr interessant und wenn ich die Zeit finde, werde ich mich auch diesbezüglich schlauer machen. Leider ist es mir mom nicht möglich für diese kleine Bedienungshilfe so viel Zeit aufzuwenden. Das muß dann jetzt vorübergehend erstmal so reichen ;).

Ich hatte gehofft es gäbe evtl eine Möglichkeit mit ein paar zeilen Python die mom geöffnete Website im Standardbrowser dynamisch einzulesen. Vl mit urllib oder urllib2, wobei ich sowas in der Dok auf die Schnelle auch nicht gefunden hatte.

Trotzdem Danke
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Tilo81 hat geschrieben:Ich hatte gehofft es gäbe evtl eine Möglichkeit mit ein paar zeilen Python die mom geöffnete Website im Standardbrowser dynamisch einzulesen. Vl mit urllib oder urllib2, wobei ich sowas in der Dok auf die Schnelle auch nicht gefunden hatte.
Nein, das wäre ja noch besser wenn jedes beliebige Programm auf dem System mitlesen könnte, dass ich grad auf meiner Homebanking-Seite bin.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten