使用虚拟帧缓冲区的Python Webkit截图网站
问题是我需要在不运行X服务器的情况下捕捉网站的截图。
理论上,可以创建一个虚拟的帧缓冲区,然后用它来捕捉截图。
有没有类似的解决方案?任何建议都非常感谢!
Sultan
1 个回答
8
你可以使用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
- 捕捉一张屏幕截图
- 关闭浏览器
- 停止虚拟显示器