Python Mania

pywebkit, navegador web en python

Posted on: febrero 18, 2010

Mientras actualizaba debian me encontré con un paquete bastante curioso python-webkit (en donde me di cuenta que su nombre en realidad es pywebkitgtk) y para quien se pregunte que demonios es webkit, simplemente es el motor de renderizado de de algunos navegadores como safari o la pokébola de google Chrome, en otras palabras es el encargado de “mostrar” o “dibujar” las páginas web dentro de un navegador. Claro que hay otras alternativas como pygtkmozembed (que usa el motor de firefox) pero no dejan mucho margen para manipularlo

Volviendo al tema principal, en resumen vamos a hacer un intento de navegador web, en donde tendremos una barra de direcciones (un entry de gtk) y abajo va a mostrar la pagina que le indiquemos.

Primero instalamos pywebkit, de debian basta con hacer un:

# apt-get install python-webkit libwebkit-dev

O sino lo bajan desde su sitio

Luego creamos un navegador muy simple:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

# Escrito por Daniel Fuentes B.
# Licencia: BSD <http://www.opensource.org/licenses/bsd-license.php>

import pygtk
pygtk.require("2.0")
import gtk
import webkit

class Browser:
    # Ventana del programa
    def __init__(self):
        self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
        self.window.set_position(gtk.WIN_POS_CENTER)
        self.window.set_default_size(800, 600)
        self.window.connect("destroy", self.on_quit)

        # Un vBox, en la parte de arriba hay una caja para ingresar
        # la direccion web, y abago se muestra la pagina
        vbox = gtk.VBox()

        # La parte de la entrada de la url
        self.url_text = gtk.Entry()
        self.url_text.connect('activate', self.url_text_activate)

        # La parte en donde se muestra la pagina que se visita (con scroll incluido)
        self.scroll_window = gtk.ScrolledWindow()
        self.webview = webkit.WebView()
        self.scroll_window.add(self.webview)

        # Unimos todo en el vBox
        vbox.pack_start(self.url_text, fill=True, expand=False)
        # El expand=False al empaquetarlo es para que el entry no ocupe media pantalla
        vbox.pack_start(self.scroll_window, True, True)
        self.window.add(vbox)
        self.window.show_all()

    # Definimos las señales y demas cosas de la ventana:
    def url_text_activate(self, entry):
    # al activar el entry (por ejemplo al hacer enter), se obtiene el
    # texto de la entry (la url) y se activa la funcion que abre la url
        self.open_url(entry.get_text())

    def on_quit(self, widget):
        gtk.main_quit()

    # La funcion magica que abre la url que se le pasa 
    def open_url(self, url):
        "Funcion que carga la pagina elegida"
        # cambia el titulo de la ventana
        self.window.set_title("Ejemplo pywebkitgtk - %s" % url)
        # mostramos la direccion de la pagina abierta en el entry
        self.url_text.set_text(url)
        # abre la pagina
        self.webview.open(url)

if __name__ == "__main__":
    browser = Browser()
    # abrimos la pagina de inicio (opcional)
    browser.open_url("http://code.google.com/p/pywebkitgtk/") 
    gtk.main()

El codigo se entiende por si mismo. Si se dan cuenta casi todo el código se para crear la ventana con pygtk (tal como fue explicado hace mucho tiempo en la introducción a pygtk que escribí), siendo la unica parte que involucra a webkit la parte en donde se define open_url (más o menos a partir de la linea 50)

Y les dejo una captura del ejemplo funcionando:
pywebkit-gtk

Si alguien se interesa en la web del proyecto hay un navegador mucho más funcional o puede revisar este blog

About these ads
Etiquetas: ,

5 comentarios to "pywebkit, navegador web en python"

Muchas Gracias por este tutorial, has salvado mi vida. Saludos

waw muy interesante tu blog

hola! me podrias alludar en un par de cosaS? quiero hacer un navegador en phyton… pero un poco mas completo, pero nose como!
te dejo mi mail para que me digas que puedo mirar/leer para saber como hacerlo !
Gracias de antemano!
shaaylaak.mrl@gmail.com

[...] La información básica para escribir este tema se la debo al amigo Krel en http://foro.ubuntu-guia.com/  el cual saco la información desde: http://holamundopy.blogspot.com.es/2011/10/navegador-web-con-python.html  ; el autor del script es Daniel Fuentes B. al cual obviamente le doy las gracias; la página donde publicó el código del script es: http://pythonmania.wordpress.com/2010/02/18/pywebkit-navegador-web-en-python/ [...]

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Caregorías

Otros

Porque no todo es escribir en el blog.



Perfil en ohloh:

Ohloh profile for Daniel Fuentes B.


Mi cuenta en identi.ca:

identi.ca

Archivo

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

Únete a otros 31 seguidores

A %d blogueros les gusta esto: