我需要编写一个打开网站的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中打开一个新选项卡,但它没有截取它的截图:(
我希望解决方案是跨平台的。感谢您的帮助:))
修改
这里的主要问题是剧本在我的网页完全打开之前拍了一张照片。如何解决这个问题?
答案 0 :(得分:2)
我相信您需要针对不同操作系统的不同解决方案。使用sys.platform
查找您所在的平台。其余的你必须弄清楚自己,但快速的互联网搜索显示:
Take a screenshot via a python script. [Linux]
Fastest way to take a screenshot with python on windows
答案 1 :(得分:1)
根据this question,您应该可以使用ImageGrab截取屏幕截图。由于ImageGrab使用PIL,因此应该是跨平台的。 Here是一些示例代码,可以帮助您实现目标
希望这有帮助
答案 2 :(得分:1)
这个解决方案是相当跨平台的,但是如果你试图在带有菜单/工具栏的桌面上打开一些网页......这不是你想要的。
您可以使用SeleniumHQ自动化您选择的浏览器,让浏览器呈现页面,然后获取呈现页面的完整图像 - 即,不仅仅是显示页面部分的屏幕截图在屏幕上。然后你可以相应地裁剪。