Необходимо сделать скриншот страницы.
Использую скрипт:
import sys import time from PyQt4.QtCore import * from PyQt4.QtGui import * from PyQt4.QtWebKit import * class MakeScreenshot(QWebView): def __init__(self): self.app = QApplication(sys.argv) QWebView.__init__(self) self._loaded = False self.loadFinished.connect(self._loadFinished) def wait_load(self, delay=0): while not self._loaded: self.app.processEvents() time.sleep(delay) self.loaded = False def _loadFinished(self, result): self._loaded = True def get_image(self, url): self.load(QUrl(url)) self.wait_load() frame = self.page().mainFrame() self.page().setViewportSize(frame.contentsSize()) image = QImage(self.page().viewportSize(), QImage.Format_ARGB32) painter = QPainter(image) frame.render(painter) painter.end() return image s = MakeScreenshot() image = s.get_image('http://yandex.ru') image.save('website-screen7.png')
Столкнулся с двумя проблемами:
1) Сайт с которого надо снять скриншот, видит меня как мобильного клиента. Как принудительно задать версию клиента, так и не понял.
2) Скрипт возвращает следующее:
QFont::setPixelSize: Pixel size <= 0 (0)
QFont::setPixelSize: Pixel size <= 0 (0)
Имеет ли смысл эти параметры задать руками ? Если имеет то как их задать ?