问题描述
问题是我需要在不运行X服务器的情况下捕获网站屏幕截图.
The problem is that I need capture web-site screenshots without running X server.
因此,从理论上讲,可以创建一个虚拟帧缓冲区并将其用于捕获屏幕截图.
So theoretically it's possible to create a virtual frame buffer and to use it to capture screenshot.
有没有类似的解决方案,任何建议将不胜感激?
Is there any similar solutions, any advice would be appreciated?
苏丹
推荐答案
您可以结合使用Selenium WebDriver和pyvirtualdisplay(使用xvfb)在虚拟显示器中运行浏览器并捕获屏幕截图.
you can use a combination of Selenium WebDriver and pyvirtualdisplay (which uses xvfb) to run your browser in a virtual display and capture screenshots.
因此,您需要的设置是:
so, the setup you need is:
- 硒Python绑定
- pyvirtualdisplay Python软件包(取决于xvfb)
在Debian/Ubuntu Linux系统上,您可以使用以下命令设置所有内容:
On Debian/Ubuntu Linux systems, you can setup everything with:
-
$ sudo apt-get install python-pip xvfb
-
$ sudo pip install selenium
$ sudo apt-get install python-pip xvfb
$ sudo pip install selenium
设置完成后,下面的代码示例应起作用:
once you have it setup, the following code example should work:
#!/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
- 捕获屏幕截图
- 关闭浏览器
- 停止虚拟显示
这篇关于Python Webkit使用虚拟帧缓冲区制作网站屏幕截图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!