Вопрос по screenshot, python, screensaver, browser, wxwidgets – Сделайте скриншот открытого сайта в скрипте Python

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, но не делает снимок экрана :(

Я хочу, чтобы решение было кроссплатформенным. Спасибо за любую помощь :)

РЕДАКТИРОВАТЬ:

Основная проблема заключается в том, что сценарий должен делать снимок, прежде чем моя веб-страница будет полностью открыта. Как решить эту проблему?

Я нене знаю, каков твойwebbrowser Модуль способен на. Если нет• любой обратный вызов из браузера в управляющий скрипт Python, указывающий, что загрузка страницы завершена, тогда у вас остается только одна опция: подождать постоянное время и сделать его достаточно длинным: например, ,time.sleep(5) Jan-Philip Gehrcke

Ваш Ответ

3   ответа
2

что вам нужны разные решения для разных операционных систем. использованиеsys.platform чтобы узнать, на какой платформе вы находитесь. Остальное вы должны выяснить сами, но быстрый поиск в интернете показал:

В системах Linux вы можете сделать снимок экрана, как описано здесь:

Сделайте скриншот с помощью скрипта Python. [Linux]

В системах Windows вы можете основать свое решение на следующем ответе:

Самый быстрый способ сделать скриншот с Python на Windows

В системах Mac это поможет:

Сделать снимок экрана в Python на Mac OS X

1

этот вопрос, вы должны быть в состоянии использоватьImageGrab сделать скриншот. Поскольку ImageGrab использует PIL, он должен быть кроссплатформенным.Вот пример кода, который поможет вам

Надеюсь это поможет

Посмотрите на [этот вопрос])stackoverflow.com/questions/3636008/...), что говорит об ожидании полной загрузки веб-страницы. Возможно, вам придется использовать селен inspectorG4dget
хорошо, я попробую, но все еще существует проблема, что мой скрипт делает снимок экрана ДО того, как моя веб-страница полностью открыта Katie
1

но если выпытаемся показать немного веб-страницы, открытой на рабочем столе с меню / панелями инструментов и т. д ... этоне то, что вы хотите.

Вы могли бы использоватьSeleniumHQ чтобы автоматизировать браузер по вашему выбору, пусть этот браузер отобразит страницу, а затем получит полное изображение отображаемой страницы, т. е. не просто скриншот части страницы, которая 's отображается на экране. Вы можете обрезать это соответственно.

Я посмотрю на это, выглядит просто отлично, спасибо Katie

Похожие вопросы