2

我需要编写一个打开网站的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 中打开一个新选项卡,但不会对其进行截图:(

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

编辑:

这里的主要问题是脚本必须在我的网页完全打开之前拍照。如何解决这个问题?

4

3 回答 3

2

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

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

通过 python 脚本截取屏幕截图。[Linux]

  • 在 Windows 系统上,您可以将解决方案基于以下答案:

在 Windows 上使用 python 截屏的最快方法

  • 在 Mac 系统上,这将有助于:

在 Mac OS X 上用 Python 截屏

于 2012-09-24T10:51:06.940 回答
1

根据这个问题,你应该可以使用ImageGrab来截图。由于 ImageGrab 使用 PIL,这应该是跨平台的。是一些示例代码,可帮助您上路

希望这可以帮助

于 2012-09-24T10:50:55.620 回答
1

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

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

于 2012-09-24T11:01:15.937 回答