在python脚本中截取开放网站的屏幕截图

时间:2012-09-24 10:40:08

标签: python browser screenshot screensaver wxwidgets

我需要编写一个打开网站的python脚本,当网站完全打开时,它会截取已打开网站的截图。

我是这样写的:

import webbrowser
import wx

wx.App()
link = "http://stackoverflow.com/questions"
webbrowser.get('firefox %s').open_new_tab(link)
screen = wx.ScreenDC()
size = screen.GetSize()
bmp = wx.EmptyBitmap(size[0], size[1])
mem = wx.MemoryDC(bmp)
mem.Blit(0, 0, size[0], size[1], screen, 0, 0)
del mem
bmp.SaveFile('screenshot.png', wx.BITMAP_TYPE_PNG)

它只在firefox中打开一个新选项卡,但它没有截取它的截图:(

我希望解决方案是跨平台的。感谢您的帮助:))

修改

这里的主要问题是剧本在我的网页完全打开之前拍了一张照片。如何解决这个问题?

3 个答案:

答案 0 :(得分:2)

我相信您需要针对不同操作系统的不同解决方案。使用sys.platform查找您所在的平台。其余的你必须弄清楚自己,但快速的互联网搜索显示:

  • 在Linux系统上,您可以按照此处所述截取屏幕截图:

Take a screenshot via a python script. [Linux]

  • 在Windows系统上,您可以根据以下答案建立解决方案:

Fastest way to take a screenshot with python on windows

  • 在Mac系统上,这会有所帮助:

Take screenshot in Python on Mac OS X

答案 1 :(得分:1)

根据this question,您应该可以使用ImageGrab截取屏幕截图。由于ImageGrab使用PIL,因此应该是跨平台的。 Here是一些示例代码,可以帮助您实现目标

希望这有帮助

答案 2 :(得分:1)

这个解决方案是相当跨平台的,但是如果你试图在带有菜单/工具栏的桌面上打开一些网页......这不是你想要的。

您可以使用SeleniumHQ自动化您选择的浏览器,让浏览器呈现页面,然后获取呈现页面的完整图像 - 即,不仅仅是显示页面部分的屏幕截图在屏幕上。然后你可以相应地裁剪。