我目前正在使用Python Webkit DOM Bindings以编程方式与网站进行互动,这对我有用。
唯一的问题是它坚持打开GTK窗口来显示页面。有人想出办法防止它打开窗户吗?即以无头的方式使用它?
我正在初始化视图:
wv = pywebkitgtk.WebView(1024, 768, url=url)
隐式打开GTK窗口,然后我有一个onload事件处理程序来操作DOM。
我首先想到的是继承WebView,但这是不可能的,因为它是一个已编译的类。
还有其他想法吗?
答案 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()