you have a limited number of options, via the various DOM wrappers. the PyWebkitQt one is truly rubbish; the Objective-C one is only available on MacOSX (and is again limited and incomplete); the COM one is only available on windows; the GObject one is still under development even though the first version that was created in 2008 was superior and more feature-complete than what's actually now in webkit mainline source code; there are also some c++ bindings but i have not evaluated them. and then of course there's also the Javascript bindings and the google V8 javascript bindings (yes they're separate) but those are only available "in-browser".
that pretty much leaves the pythonwebkit project - http://www.gnu.org/software/pythonwebkit - as the only non-javascript-based DOM manipulation API that actually aims for full de-facto standards compliance, making python truly a peer of javascript when it comes to DOM manipulation.
l.