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"')
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‘)
Danke für den Hinweis. So sieht das ganze natürlich noch ein wenig nativer aus.
Zum Vergleich die Moeglichkeiten die PyQT und Webkit bietet: http://freeblogger.org/blog/dereine/2010-09-12-using-qwebelement-python-0
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.