Форум сайта python.su
Добрый день!
Необходимо сделать скриншот страницы.
Использую скрипт:
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')
Офлайн
Тебе нужно изменить http заголовок User-Agent в запросах, к примеру хромовским заголовком ‘Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36’ :)
Офлайн
User-Agent менять не надо. Нужно задать геометрию виджета:
class MakeScreenshot(QWebView): def __init__(self): QWebView.__init__(self) self.loadFinished.connect(self._loadFinished) def _loadFinished(self, result): 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() image.save('website-screen7.png') self.close() app = QApplication(sys.argv) s = MakeScreenshot() s.setGeometry(0,0,1024,780) s.load(QUrl('https://www.linux.org.ru/')) sys.exit(app.exec_())
Отредактировано Rodegast (Фев. 26, 2017 01:02:58)
Офлайн