Zugriff auf das DOM mit Python in webkitgtk

Während der Entwicklung von SaleZ stand ich vor dem Problem, dass ich Werte aus dem Document Object Model (DOM) auslesen wollte. In Webkit gibt es zwar die Funktion get_dom_document, allerdings ist sie noch nicht in der Version von Webkit enthalten, welche mit Ubuntu 10.04 mitgeliefert wird. Nach einiger Suche im Netz habe ich dann eine Lösung für das Problem gefunden.

Mit Hilfe des folgenden Codes kann man sich den Inhalt eines bestimmten Elements ausgeben:

import jswebkit

ctx = jswebkit.JSContext(webView.get_main_frame().get_global_context())
text = ctx.EvaluateScript("document.getElementById("fooBar").innerHTML")

Möchte man hingegen das DOM manipulieren, kann man die  execute_script Funktion eines WebViews nutzen:

webView.execute_script('document.getElementById("foobar").innerHTML = "foo bar"')

4 Comments:

  1. sbillaudelle

    Man kann mit PyJavaScriptCore gleich den ganzen DOM manipulieren:

    ctx = jscore.JSContext(self.view.get_main_frame().get_global_context()).globalObject
    print ctx.document.getElementById(‚foo‘)

  2. zefanja

    Danke für den Hinweis. So sieht das ganze natürlich noch ein wenig nativer aus.

  3. zefanja

    Mit PyQT hatte ich auch mal ne Zeit lang was gemacht. Ist schon ein ziemlich mächtiges Framework und wie ich finde besser geeignet (als GTK), wenn man cross-plattform entwickeln möchte.

Leave a Reply:

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert