200 lines
8.6 KiB
ReStructuredText
200 lines
8.6 KiB
ReStructuredText
|
|
: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>
|
|
|
|
|
|
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 to
|
|
override the platform default list of browsers, as a os.pathsep-separated list
|
|
of browsers to try in order. 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.
|
|
|
|
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.
|
|
|
|
The script :program:`webbrowser` can be used as a command-line interface for the
|
|
module. It accepts an URL as the argument. It accepts the following optional
|
|
parameters: :option:`-n` opens the URL in a new browser window, if possible;
|
|
:option:`-t` opens the URL in a new browser page ("tab"). The options are,
|
|
naturally, mutually exclusive.
|
|
|
|
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=1]])
|
|
|
|
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).
|
|
|
|
.. versionchanged:: 2.5
|
|
*new* can now be 2.
|
|
|
|
|
|
.. 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`.
|
|
|
|
.. versionadded:: 2.5
|
|
|
|
|
|
.. function:: get([name])
|
|
|
|
Return a controller object for the browser type *name*. If *name* is empty,
|
|
return a controller for a default browser appropriate to the caller's
|
|
environment.
|
|
|
|
|
|
.. function:: register(name, constructor[, instance])
|
|
|
|
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``.
|
|
|
|
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.
|
|
|
|
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'`` | :class:`Mozilla('mozilla')` | |
|
|
+-----------------------+-----------------------------------------+-------+
|
|
| ``'firefox'`` | :class:`Mozilla('mozilla')` | |
|
|
+-----------------------+-----------------------------------------+-------+
|
|
| ``'netscape'`` | :class:`Mozilla('netscape')` | |
|
|
+-----------------------+-----------------------------------------+-------+
|
|
| ``'galeon'`` | :class:`Galeon('galeon')` | |
|
|
+-----------------------+-----------------------------------------+-------+
|
|
| ``'epiphany'`` | :class:`Galeon('epiphany')` | |
|
|
+-----------------------+-----------------------------------------+-------+
|
|
| ``'skipstone'`` | :class:`BackgroundBrowser('skipstone')` | |
|
|
+-----------------------+-----------------------------------------+-------+
|
|
| ``'kfmclient'`` | :class:`Konqueror()` | \(1) |
|
|
+-----------------------+-----------------------------------------+-------+
|
|
| ``'konqueror'`` | :class:`Konqueror()` | \(1) |
|
|
+-----------------------+-----------------------------------------+-------+
|
|
| ``'kfm'`` | :class:`Konqueror()` | \(1) |
|
|
+-----------------------+-----------------------------------------+-------+
|
|
| ``'mosaic'`` | :class:`BackgroundBrowser('mosaic')` | |
|
|
+-----------------------+-----------------------------------------+-------+
|
|
| ``'opera'`` | :class:`Opera()` | |
|
|
+-----------------------+-----------------------------------------+-------+
|
|
| ``'grail'`` | :class:`Grail()` | |
|
|
+-----------------------+-----------------------------------------+-------+
|
|
| ``'links'`` | :class:`GenericBrowser('links')` | |
|
|
+-----------------------+-----------------------------------------+-------+
|
|
| ``'elinks'`` | :class:`Elinks('elinks')` | |
|
|
+-----------------------+-----------------------------------------+-------+
|
|
| ``'lynx'`` | :class:`GenericBrowser('lynx')` | |
|
|
+-----------------------+-----------------------------------------+-------+
|
|
| ``'w3m'`` | :class:`GenericBrowser('w3m')` | |
|
|
+-----------------------+-----------------------------------------+-------+
|
|
| ``'windows-default'`` | :class:`WindowsDefault` | \(2) |
|
|
+-----------------------+-----------------------------------------+-------+
|
|
| ``'internet-config'`` | :class:`InternetConfig` | \(3) |
|
|
+-----------------------+-----------------------------------------+-------+
|
|
| ``'macosx'`` | :class:`MacOSX('default')` | \(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 platforms; requires the standard MacPython :mod:`ic` module.
|
|
|
|
(4)
|
|
Only on MacOS X platform.
|
|
|
|
Here are some simple examples::
|
|
|
|
url = 'http://www.python.org'
|
|
|
|
# Open URL in a new tab, if a browser window is already open.
|
|
webbrowser.open_new_tab(url + '/doc')
|
|
|
|
# Open URL in new window, raising the window if possible.
|
|
webbrowser.open_new(url)
|
|
|
|
|
|
.. _browser-controllers:
|
|
|
|
Browser Controller Objects
|
|
--------------------------
|
|
|
|
Browser controllers provide two methods which parallel two of the module-level
|
|
convenience functions:
|
|
|
|
|
|
.. method:: controller.open(url[, new[, autoraise=1]])
|
|
|
|
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`.
|
|
|
|
.. versionadded:: 2.5
|
|
|