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

3 投票
1 回答
2067 浏览
提问于 2025-04-16 20:48

问题是我需要在不运行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
  • 捕捉一张屏幕截图
  • 关闭浏览器
  • 停止虚拟显示器

撰写回答