Python Webkit 使用虚拟帧缓冲区制作网站截图

Posted

技术标签:

【中文标题】Python Webkit 使用虚拟帧缓冲区制作网站截图【英文标题】:Python Webkit making web-site screenshots using virtual framebuffer 【发布时间】:2011-07-04 14:07:24 【问题描述】:

问题是我需要在不运行 X 服务器的情况下捕获网站截图。

因此理论上可以创建一个虚拟帧缓冲区并使用它来捕获屏幕截图。

有没有类似的解决方案,不胜感激?

苏丹

【问题讨论】:

【参考方案1】:

您可以结合使用 Selenium WebDriver 和 pyvirtualdisplay(使用 xvfb)在虚拟显示器中运行您的浏览器并捕获屏幕截图。

所以,你需要的设置是:

Selenium Python 绑定 pyvirtualdisplay Python 包(依赖 xvfb)

在 Debian/Ubuntu Linux 系统上,您可以使用以下方式设置所有内容:

$ sudo apt-get install python-pip xvfb $ sudo pip install selenium

设置完成后,以下代码示例应该可以工作:

#!/usr/bin/env python

from pyvirtualdisplay import Display
from selenium import webdriver

display = Display(visible=0, size=(800, 600))
display.start()

browser = webdriver.Firefox()
browser.get('http://www.google.com')
browser.save_screenshot('screenie.png')
browser.quit()

display.stop()

这将:

启动虚拟显示器 启动 Firefox 浏览器 导航到 google.com 截屏 关闭浏览器 停止虚拟显示

【讨论】:

非常感谢@Corey Goldberg) @Corey-Goldberg 我们如何降低图像质量?图片质量很高,很重 Max,我不认为它是可配置的(afaik),但您可以通过后处理程序轻松运行图像来做到这一点。 嗨,Corey,我没有使用 xvfb 二进制文件,但需要控制屏幕截图大小。我可以在 Selenium 中做到这一点吗?即屏幕截图应该非常小 任何非基于火狐的解决方案?

以上是关于Python Webkit 使用虚拟帧缓冲区制作网站截图的主要内容,如果未能解决你的问题,请参考以下文章

vfb-虚拟帧缓冲区的目的是啥?

如何在 iOS 中制作 OpenGL ES 帧缓冲区的副本?

text xvfb创建虚拟帧缓冲区

使用 IBO 制作动画 - 好还是坏?

多个视口与多个帧缓冲区之间的使用差异是啥?

帧缓冲设备应用开发