Versión: Python 2.x, 3.x; PyQt 4.
Descargas: websnapshot.zip.
El siguiente código permite capturar un sitio web y almacenarlo como una imagen del tipo PNG. Utiliza PyQt 4 y está basado en el código de fuente del Navegador web simple publicado anteriormente. Usuarios de PyQt 5 no deberían experimentar problemas con el código.
La idea principal es sencilla: utilizar la función QWidget.render
, la cual permite pintar el contenido de un control en una instancia de QPixmap
. Finalmente, se utiliza la función QPixmap.save
para almacenar la imagen como un archivo PNG.
def snapshot(): pageview = webview.page().view() pixmap = QPixmap(pageview.size()) pageview.render(pixmap) pixmap.save("output.png")
Este código corresponde a la función encargada de tomar la imagen. webview
corresponde a una instancia de QWebView
, con una dirección de URL cargada previamente.
A continuación el código completo, también disponible en las descargas.
#!/usr/bin/env python # -*- coding: utf-8 -*- # # websnapshot.py # # Copyright 2014 Recursos Python - www.recursospython.com # # import sys from PyQt4.QtCore import QUrl from PyQt4.QtGui import (QApplication, QHBoxLayout, QMainWindow, QPixmap, QWidget) from PyQt4.QtWebKit import QWebView class Widgets(QMainWindow): def __init__(self): QMainWindow.__init__(self) self.setWindowTitle("Simple Web Browser") self.widget = QWidget(self) self.webview = QWebView() self.webview.load(QUrl("https://www.recursospython.com/")) self.layout = QHBoxLayout() self.layout.addWidget(self.webview) self.widget.setLayout(self.layout) self.setCentralWidget(self.widget) self.webview.page().mainFrame().loadFinished.connect( self.load_finished) def load_finished(self): self.snapshot() def snapshot(self): pageview = self.webview.page().view() pixmap = QPixmap(pageview.size()) pageview.render(pixmap) pixmap.save("output.png") if __name__ == "__main__": app = QApplication(sys.argv) window = Widgets() window.show() sys.exit(app.exec_())
Para asegurar que el sitio ha sido cargado completamente, el código espera a la señal loadFinished
.
Resultado:
Curso online 👨💻
¡Ya lanzamos el curso oficial de Recursos Python en Udemy!
Un curso moderno para aprender Python desde cero con programación orientada a objetos, SQL y tkinter
en 2024.
Consultoría 💡
Ofrecemos servicios profesionales de desarrollo y capacitación en Python a personas y empresas. Consultanos por tu proyecto.
jean says:
Genial ! estoy descubriendo Python a 75 años !
Recursos Python says:
¡Nunca es tarde para aprender cosas nuevas! Un saludo.