0

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

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

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

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

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

我对 Gtk 和 PyQt 的主要问题是它们必须在主线程上执行的方式——这是不可能的,因为它不符合我的多线程架构。使用预装在 raspbian 上的网络浏览器的缺点是,从 python 中你缺乏控制并且速度很慢。最后,使用 Arch-Linux 浏览器的问题在于它最终变得混乱且难以控制。

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

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

任何意见,将不胜感激。

詹姆士。

4

3 回答 3

0

我会使用 PyQT 来显示页面,但如果 PyQT 使用线程的方式不适合您的应用程序,您可以使用 PyQT 编写一个极简主义(我在这里说的是大约 10 行代码)Web 浏览器,然后分叉它从你的主要应用程序?

于 2014-07-31T05:59:29.087 回答
0

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

然而,经过广泛的测试 - 我决定不适合使用这些,因为它们没有 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()

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

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

导入可爱的信息。如果您想使用 javascript 呈现整个页面,则需要更长的时间...指定--delay 1000在这种情况下它将延迟加载 1 秒的位置。对我来说,它花了大约 7000 才能让它恰到好处......

于 2014-08-01T13:40:33.957 回答
-1

我在瓦拉写过winks-up。它小而快,在 raspbian 上编译得很好。所有代码都经过优化以减少内存占用。并不完美,但比什么都好

于 2015-07-07T18:45:33.547 回答