轻量级Python Web浏览器

时间:2014-07-30 20:04:49

标签: python multithreading web browser python-webbrowser

这里有一些奇怪的要求,但是我无法找到答案。

我正在编写一个显示网页和本地存储图像的python应用程序。

我需要的是一种使用python显示网页的方法,它非常轻巧且非常快。原因是它在Raspberry Pi上运行。

当然我有很多选择,我可以通过安装在Raspbian发行版上的Web浏览器运行它并在python中作为一个单独的进程运行它,我可以下载一个兼容Arch-Linux的浏览器并在python中作为一个单独的进程运行它最后我可以使用Gtk或PyQt编写自己的本机python文件。

所有这些方法都有其缺点和严重的开销。当我有一个要显示的网页时,网页浏览器也必须全屏显示,并且在我显示图像时最小化。

我对Gtk和PyQt的主要问题是它们必须在主线程上执行的方式 - 这是不可能的,因为它与我的多线程架构不一致。使用预先安装在raspbian上的Web浏览器的缺点是来自python你缺乏控制而且速度很慢。最后,使用Arch-Linux浏览器的问题是它最终变得混乱而难以控制。

我理想情况下需要的是几乎即时加载网页的Web浏览器,或者可以处理多个实例的多线程Web浏览器。这样我可以在后台缓冲一个网页,同时显示另一个浏览器。

你们有什么建议指引我朝着正确的方向前进吗?我会认为现在会有一个简洁的多线程基于python的解决方案,我认为这是因为没有人需要做我正在做的事情(不太可能) - 或者我和#39;我错过了一些大事(更有可能)!

任何建议都将受到赞赏。

詹姆斯。

3 个答案:

答案 0 :(得分:0)

我使用PyQT来显示页面但是如果PyQT使用线程的方式不适合你的应用程序,你可能只是使用PyQT编写一个极简主义者(我在这里讲的是~10行代码)web浏览器,并从主应用程序中分叉它?

答案 1 :(得分:0)

我遇到的解决方案是使用几个用于linux的帧缓冲浏览器:netsurf-fb和links2 with - 。

然而,经过广泛的测试 - 我认为使用这些是不合适的,因为他们没有javascript支持。

因此,最终解决方案是使用名为cutycapt的脚本在名为xvfb的虚拟x窗口帧缓冲区中运行。

我使用像这样的pxpect库从python中调用它:

process=pexpect.spawn(xvfb_run_bin+' --server-args "-screen 0, '+self.width_height+'x24" cutycapt --url='+uri+' --out='+temp_path)
        process.wait()

这在我的实现中关闭,呈现页面并保存屏幕截图。然后,图像查看器从我的缓存中提取图像并显示它。

如果有人有任何进一步的问题 - 请随时评论这个问题...

IMPORT cutecapt信息。如果你想使用javascript渲染整个页面,则需要更长时间...指定--delay 1000,在这种情况下,它将延迟加载1秒。对我来说,它需要大约7000才能让它恰到好处......

答案 2 :(得分:-1)

我在vala中写过眨眼。 它小而快,在raspbian上编译得很好。 所有代码都经过优化以减少内存占用。 并不完美,但更好的是什么