pywebkitgtk:无头+完整的DOM交互可能吗?

时间:2013-01-07 16:14:16

标签: python webkit gtk

我目前正在使用Python Webkit DOM Bindings以编程方式与网站进行互动,这对我有用。

唯一的问题是它坚持打开GTK窗口来显示页面。有人想出办法防止它打开窗户吗?即以无头的方式使用它?

我正在初始化视图:

    wv = pywebkitgtk.WebView(1024, 768, url=url)

隐式打开GTK窗口,然后我有一个onload事件处理程序来操作DOM。

我首先想到的是继承WebView,但这是不可能的,因为它是一个已编译的类。

还有其他想法吗?

5 个答案:

答案 0 :(得分:2)

我是负责pythonwebkit的开发人员,我在多个平台上拥有丰富的专业知识。实际上,你真的,真的想要一个完全“无头”的WebKit端口。在pythonwebkit中实际上不应该太难做,因为只有三个“入口点”函数(一个用于窗口,一个用于文档,一个用于XMLHTTPRequest)。

真的,有人应该做一个适当的“完全无头”的WebKit端口。已经有一个示例程序在WebKit的源代码树中非常接近,也许会让你入门。

答案 1 :(得分:1)

我一直在使用PyQT。 PyQTWebView在Webkit上运行,效果很好。查看Ghost.py即可开始使用,或直接使用PyQT的API。运行完全无头,并支持最新版本的Webkit。

答案 2 :(得分:1)

您可以尝试使用Xvfb。我喜欢使用命令行并手动设置我的显示,但如果你不喜欢,你可以使用它:http://cgoldberg.github.io/xvfbwrapper/

答案 3 :(得分:0)

您可以获得GTK窗口的句柄,然后调用window.hide()吗?否则,您可能只需使用完整的Webkit库。

答案 4 :(得分:0)

创建一个窗口并在那里添加webview,从不显示窗口..

我的网页视图在没有显示的情况下运行,如果我需要显示它们,可以调用show_all。

web_view = pywebkitgtk.WebView()
window = gtk.Window(gtk.WINDOW_TOPLEVEL)
sw = gtk.ScrolledWindow(hadjustment=None, vadjustment=None)
sw.set_policy(gtk.POLICY_NEVER, gtk.POLICY_NEVER)
sw.add(web_view)
window.add(sw)

#window.show_all()