El pequeño módulo estándar webbrowser
permite abrir un documento o sitio web en el navegador por defecto en sistemas Unix, Windows y Max OS X. Posibilita la visualización en una nueva pestaña, ventana o en la actual, siempre que sea posible. De no ser así, generalmente el documento es desplegado una nueva pestaña, dependiendo del navegador. Según la documentación del módulo, en la mayoría de los casos una simple llamada a la función webbrowser.open()
realizará la acción correcta.
webbrowser
también funciona como script. A través de las opciones -n
y -t
puede especificarse un sitio o documento web para ser ejecutado en una nueva ventana o pestaña, respectivamente. Por ejemplo:
python -m webbrowser -t "https://www.recursospython.com/"
Realmente lo que hace el módulo es llamar a un determinado navegador con sus correspondientes argumentos para abrir el documento o sitio deseado, de la manera indicada.
El usuario utiliza la función webbrowse.get()
para obtener el navegador por defecto o el que se indique en el parámetro opcional name
. Dicha función lee la variable de entorno BROWSER
si es que ésta existe. Por lo tanto la función webbrowser.register()
puede establecer un nuevo navegador. Una vez registrado, la función get()
puede retornar un controlador para el mismo. Si se llama a la funcion get()
con un nombre que no puede ser encontrado, la excepción webbrowser.Error
es lanzada.
Por ejemplo, el siguiente código intenta utilizar los navegador Firefox, Opera y Mosaic (el primero que se encuentre en ese orden). En caso de no encontrarse ninguno, se utiliza el navegador por defecto.
#!/usr/bin/env python # -*- coding: utf-8 -*- import webbrowser browser = None browsers = ("firefox", "opera", "mosaic", None) for b in browsers: try: browser = webbrowser.get(b) except webbrowser.Error: if b is None: print("No hay navegador registrado.") else: print("No se ha encontrado '%s'." % b) else: if b is None: print("Navegador por defecto.") else: print("Navegador '%s'." % b)
La función get()
retorna una instancia de la clase controller
. Nótese que si bien el código anterior corre tanto en Python 2 como Python 3, los tipos de navegadores predefinidos varían según la versión. Con la liberación de la 3.3 se ha añadido soporte para Chrome/Chromium. En versiones anteriores estos nombres ('google-chrome'
, 'chrome'
, 'chromium'
, 'chromium-browser'
) deben ser añadidos manualmente a través de la función webbrowser.register()
. Véase la documentación de la 3.3 para una tabla con todos los navegadores predefinidos.
Una vez aclarado esto, el módulo define las siguientes funciones:
open(url, new=0, autoraise=True)
: abreurl
en el navegador por defecto. Sinew
es0
, se despliega en la misma ventana del navegador, si es posible. Si es1
, se despliega en una nueva ventana. Si es2
, en una nueva pestaña, si es posible. La variableautoraise
indica si la ventana es traída al frente. Nótese que, en algunos sistemas, esto sucederá independientemente del valor especificado.
open_new_tab(url)
: igual aopen(url, 1)
.
open_new_tab(url)
: igual aopen(url, 2)
.
get(name)
: retorna una instancia de la clasecontroller
para el navegadorname
. En caso de no especificarse o serNone
, se retorna el navegador por defecto.
register(name, constructor, instance=None)
: establece un nuevo navegador. De esta manera, el usuario puede luego realizar una llamada aget(name)
para obtener un controlador. Siinstance
esNone
, se llamará aconstructor
para crear la instancia cuando se necesite. Siinstance
es especificado, el valor deconstructor
será ignorado.
La clase controller
retornada por la función get()
provee las funciones open()
, open_new()
y open_new_tab()
especificadas anteriormente.
Ejemplo:
#!/usr/bin/env python # -*- coding: utf-8 -*- import webbrowser # Abrir una nueva pestaña en el navegador por defecto webbrowser.open_new_tab("https://www.recursospython.com/") # Abrir una nueva ventana en Chrome try: webbrowser.get("chrome").open_new("https://www.recursospython.com/") except webbrowser.Error: print "No se ha encontrado Chrome."
Versión
Python 2, Python 3
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.
Lucas says:
AttributeError: el módulo ‘webbrowser’ parcialmente inicializado no tiene ningún atributo ‘abierto’ (probablemente debido a una importación circular) nose porque me aparece eso cuando intento abrir el navegador desde phyton…..
Recursos Python says:
Hola, asegurate de no haberle puesto
webbrowser.py
a tu archivo.Saludos
Ezca says:
Hola, no me funciona el código para abrir chrome, se va directo al print («No se ha encontrado Chrome»). Pueden ayudarme?
Recursos Python says:
Hola, te propongo que crees un tema en el foro para verlo con más detalle. Saludos
Cristian says:
Hola,¿ como puedo hacer para que google realice busquedas aleatorias desde python?.Es decir que 1) abra google 2) elija una variable , desde una lista.3)escriba la variable en el buscador 4) realice la busqueda 5) abra el primer link de buqueda.
Desde ya. Muchas gracias! 🙂
Recursos Python says:
Hola Cristian. Pasate por el foro y lo vemos.
Saludos
pedro says:
como puedo cerrar la ventana de mi navegador desde un programa en python?
para abrirlo es asi:
import webbrowser
url=»http://google.com»;
webbrowser.open(url)
pero paracerrarlo es mi duda?
Recursos Python says:
Hola Pedro. No es posible cerrar el navegador haciendo uso de este módulo, pero puedes probar otras alternativas como
subprocess
para ejecutar un navegador determinado y luego cerrar el proceso. En este enlace tienes un código de ejemplo.Un saludo.
Ghira says:
En mi caso me resulto haciendo lo siguiente:
import pyautogui, webbrowser
from time import sleep
webbrowser.open(‘https://google.com’)
sleep(10)
pyautogui.hotkey(‘ctrl’, ‘w’)
Maximus says:
DONDE PUEDO DESCARGAR LA LIBRERIA O EL WEBBROWSE
Recursos Python says:
Hola. El módulo webbrowser se incluye por defecto en todas las versiones de Python.