Найти - Пользователи
Полная версия: Снятие скриншота сайта.
Начало » Python для новичков » Снятие скриншота сайта.
1
k0mm
Добрый день!

Необходимо сделать скриншот страницы.
Использую скрипт:
 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)
Имеет ли смысл эти параметры задать руками ? Если имеет то как их задать ?
lobster
Тебе нужно изменить 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’ :)
Rodegast
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_())
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB