Controlar el navegador – webbrowser

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): abre url en el navegador por defecto. Si new es 0, se despliega en la misma ventana del navegador, si es posible. Si es 1, se despliega en una nueva ventana. Si es 2, en una nueva pestaña, si es posible. La variable autoraise 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 a open(url, 1).
     
  • open_new_tab(url): igual a open(url, 2).
     
  • get(name): retorna una instancia de la clase controller para el navegador name. En caso de no especificarse o ser None, 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 a get(name) para obtener un controlador. Si instance es None, se llamará a constructor para crear la instancia cuando se necesite. Si instance es especificado, el valor de constructor 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.

11 comentarios.

  1. 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…..

  2. 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! 🙂

  3. 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.

    • 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’)

Deja una respuesta