| :mod:`!webbrowser` --- Convenient web-browser controller |
| ======================================================== |
| |
| .. module:: webbrowser |
| :synopsis: Easy-to-use controller for web browsers. |
| |
| .. moduleauthor:: Fred L. Drake, Jr. <fdrake@acm.org> |
| .. sectionauthor:: Fred L. Drake, Jr. <fdrake@acm.org> |
| |
| **Source code:** :source:`Lib/webbrowser.py` |
| |
| -------------- |
| |
| The :mod:`webbrowser` module provides a high-level interface to allow displaying |
| web-based documents to users. Under most circumstances, simply calling the |
| :func:`.open` function from this module will do the right thing. |
| |
| Under Unix, graphical browsers are preferred under X11, but text-mode browsers |
| will be used if graphical browsers are not available or an X11 display isn't |
| available. If text-mode browsers are used, the calling process will block until |
| the user exits the browser. |
| |
| If the environment variable :envvar:`BROWSER` exists, it is interpreted as the |
| :data:`os.pathsep`-separated list of browsers to try ahead of the platform |
| defaults. When the value of a list part contains the string ``%s``, then it is |
| interpreted as a literal browser command line to be used with the argument URL |
| substituted for ``%s``; if the part does not contain ``%s``, it is simply |
| interpreted as the name of the browser to launch. [1]_ |
| |
| For non-Unix platforms, or when a remote browser is available on Unix, the |
| controlling process will not wait for the user to finish with the browser, but |
| allow the remote browser to maintain its own windows on the display. If remote |
| browsers are not available on Unix, the controlling process will launch a new |
| browser and wait. |
| |
| On iOS, the :envvar:`BROWSER` environment variable, as well as any arguments |
| controlling autoraise, browser preference, and new tab/window creation will be |
| ignored. Web pages will *always* be opened in the user's preferred browser, in |
| a new tab, with the browser being brought to the foreground. The use of the |
| :mod:`webbrowser` module on iOS requires the :mod:`ctypes` module. If |
| :mod:`ctypes` isn't available, calls to :func:`.open` will fail. |
| |
| The script :program:`webbrowser` can be used as a command-line interface for the |
| module. It accepts a URL as the argument. It accepts the following optional |
| parameters: |
| |
| * ``-n``/``--new-window`` opens the URL in a new browser window, if possible. |
| * ``-t``/``--new-tab`` opens the URL in a new browser page ("tab"). |
| |
| The options are, naturally, mutually exclusive. Usage example:: |
| |
| python -m webbrowser -t "https://www.python.org" |
| |
| .. include:: ../includes/wasm-notavail.rst |
| |
| The following exception is defined: |
| |
| |
| .. exception:: Error |
| |
| Exception raised when a browser control error occurs. |
| |
| The following functions are defined: |
| |
| |
| .. function:: open(url, new=0, autoraise=True) |
| |
| Display *url* using the default browser. If *new* is 0, the *url* is opened |
| in the same browser window if possible. If *new* is 1, a new browser window |
| is opened if possible. If *new* is 2, a new browser page ("tab") is opened |
| if possible. If *autoraise* is ``True``, the window is raised if possible |
| (note that under many window managers this will occur regardless of the |
| setting of this variable). |
| |
| Note that on some platforms, trying to open a filename using this function, |
| may work and start the operating system's associated program. However, this |
| is neither supported nor portable. |
| |
| .. audit-event:: webbrowser.open url webbrowser.open |
| |
| |
| .. function:: open_new(url) |
| |
| Open *url* in a new window of the default browser, if possible, otherwise, open |
| *url* in the only browser window. |
| |
| .. function:: open_new_tab(url) |
| |
| Open *url* in a new page ("tab") of the default browser, if possible, otherwise |
| equivalent to :func:`open_new`. |
| |
| |
| .. function:: get(using=None) |
| |
| Return a controller object for the browser type *using*. If *using* is |
| ``None``, return a controller for a default browser appropriate to the |
| caller's environment. |
| |
| |
| .. function:: register(name, constructor, instance=None, *, preferred=False) |
| |
| Register the browser type *name*. Once a browser type is registered, the |
| :func:`get` function can return a controller for that browser type. If |
| *instance* is not provided, or is ``None``, *constructor* will be called without |
| parameters to create an instance when needed. If *instance* is provided, |
| *constructor* will never be called, and may be ``None``. |
| |
| Setting *preferred* to ``True`` makes this browser a preferred result for |
| a :func:`get` call with no argument. Otherwise, this entry point is only |
| useful if you plan to either set the :envvar:`BROWSER` variable or call |
| :func:`get` with a nonempty argument matching the name of a handler you |
| declare. |
| |
| .. versionchanged:: 3.7 |
| *preferred* keyword-only parameter was added. |
| |
| A number of browser types are predefined. This table gives the type names that |
| may be passed to the :func:`get` function and the corresponding instantiations |
| for the controller classes, all defined in this module. |
| |
| +------------------------+-----------------------------------------+-------+ |
| | Type Name | Class Name | Notes | |
| +========================+=========================================+=======+ |
| | ``'mozilla'`` | ``Mozilla('mozilla')`` | | |
| +------------------------+-----------------------------------------+-------+ |
| | ``'firefox'`` | ``Mozilla('mozilla')`` | | |
| +------------------------+-----------------------------------------+-------+ |
| | ``'epiphany'`` | ``Epiphany('epiphany')`` | | |
| +------------------------+-----------------------------------------+-------+ |
| | ``'kfmclient'`` | ``Konqueror()`` | \(1) | |
| +------------------------+-----------------------------------------+-------+ |
| | ``'konqueror'`` | ``Konqueror()`` | \(1) | |
| +------------------------+-----------------------------------------+-------+ |
| | ``'kfm'`` | ``Konqueror()`` | \(1) | |
| +------------------------+-----------------------------------------+-------+ |
| | ``'opera'`` | ``Opera()`` | | |
| +------------------------+-----------------------------------------+-------+ |
| | ``'links'`` | ``GenericBrowser('links')`` | | |
| +------------------------+-----------------------------------------+-------+ |
| | ``'elinks'`` | ``Elinks('elinks')`` | | |
| +------------------------+-----------------------------------------+-------+ |
| | ``'lynx'`` | ``GenericBrowser('lynx')`` | | |
| +------------------------+-----------------------------------------+-------+ |
| | ``'w3m'`` | ``GenericBrowser('w3m')`` | | |
| +------------------------+-----------------------------------------+-------+ |
| | ``'windows-default'`` | ``WindowsDefault`` | \(2) | |
| +------------------------+-----------------------------------------+-------+ |
| | ``'macosx'`` | ``MacOSXOSAScript('default')`` | \(3) | |
| +------------------------+-----------------------------------------+-------+ |
| | ``'safari'`` | ``MacOSXOSAScript('safari')`` | \(3) | |
| +------------------------+-----------------------------------------+-------+ |
| | ``'google-chrome'`` | ``Chrome('google-chrome')`` | | |
| +------------------------+-----------------------------------------+-------+ |
| | ``'chrome'`` | ``Chrome('chrome')`` | | |
| +------------------------+-----------------------------------------+-------+ |
| | ``'chromium'`` | ``Chromium('chromium')`` | | |
| +------------------------+-----------------------------------------+-------+ |
| | ``'chromium-browser'`` | ``Chromium('chromium-browser')`` | | |
| +------------------------+-----------------------------------------+-------+ |
| | ``'iosbrowser'`` | ``IOSBrowser`` | \(4) | |
| +------------------------+-----------------------------------------+-------+ |
| |
| Notes: |
| |
| (1) |
| "Konqueror" is the file manager for the KDE desktop environment for Unix, and |
| only makes sense to use if KDE is running. Some way of reliably detecting KDE |
| would be nice; the :envvar:`!KDEDIR` variable is not sufficient. Note also that |
| the name "kfm" is used even when using the :program:`konqueror` command with KDE |
| 2 --- the implementation selects the best strategy for running Konqueror. |
| |
| (2) |
| Only on Windows platforms. |
| |
| (3) |
| Only on macOS. |
| |
| (4) |
| Only on iOS. |
| |
| .. versionadded:: 3.2 |
| A new :class:`!MacOSXOSAScript` class has been added |
| and is used on Mac instead of the previous :class:`!MacOSX` class. |
| This adds support for opening browsers not currently set as the OS default. |
| |
| .. versionadded:: 3.3 |
| Support for Chrome/Chromium has been added. |
| |
| .. versionchanged:: 3.12 |
| Support for several obsolete browsers has been removed. |
| Removed browsers include Grail, Mosaic, Netscape, Galeon, |
| Skipstone, Iceape, and Firefox versions 35 and below. |
| |
| .. versionchanged:: 3.13 |
| Support for iOS has been added. |
| |
| Here are some simple examples:: |
| |
| url = 'https://docs.python.org/' |
| |
| # Open URL in a new tab, if a browser window is already open. |
| webbrowser.open_new_tab(url) |
| |
| # Open URL in new window, raising the window if possible. |
| webbrowser.open_new(url) |
| |
| |
| .. _browser-controllers: |
| |
| Browser Controller Objects |
| -------------------------- |
| |
| Browser controllers provide these methods which parallel three of the |
| module-level convenience functions: |
| |
| |
| .. attribute:: controller.name |
| |
| System-dependent name for the browser. |
| |
| |
| .. method:: controller.open(url, new=0, autoraise=True) |
| |
| Display *url* using the browser handled by this controller. If *new* is 1, a new |
| browser window is opened if possible. If *new* is 2, a new browser page ("tab") |
| is opened if possible. |
| |
| |
| .. method:: controller.open_new(url) |
| |
| Open *url* in a new window of the browser handled by this controller, if |
| possible, otherwise, open *url* in the only browser window. Alias |
| :func:`open_new`. |
| |
| |
| .. method:: controller.open_new_tab(url) |
| |
| Open *url* in a new page ("tab") of the browser handled by this controller, if |
| possible, otherwise equivalent to :func:`open_new`. |
| |
| |
| .. rubric:: Footnotes |
| |
| .. [1] Executables named here without a full path will be searched in the |
| directories given in the :envvar:`PATH` environment variable. |