2007-08-15 11:28:01 -03:00
|
|
|
: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>
|
|
|
|
|
2011-08-18 21:14:03 -03:00
|
|
|
**Source code:** :source:`Lib/webbrowser.py`
|
|
|
|
|
|
|
|
--------------
|
2007-08-15 11:28:01 -03:00
|
|
|
|
|
|
|
The :mod:`webbrowser` module provides a high-level interface to allow displaying
|
|
|
|
Web-based documents to users. Under most circumstances, simply calling the
|
2009-07-26 11:19:57 -03:00
|
|
|
:func:`.open` function from this module will do the right thing.
|
2007-08-15 11:28:01 -03:00
|
|
|
|
|
|
|
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
|
2015-11-01 23:37:02 -04:00
|
|
|
override the platform default list of browsers, as an :data:`os.pathsep`-separated
|
2009-12-23 22:54:53 -04:00
|
|
|
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
|
2009-05-17 05:55:00 -03:00
|
|
|
``%s``, it is simply interpreted as the name of the browser to launch. [1]_
|
2007-08-15 11:28:01 -03:00
|
|
|
|
|
|
|
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
|
2016-04-14 23:14:19 -03:00
|
|
|
module. It accepts a URL as the argument. It accepts the following optional
|
Merged revisions 86521,86632,86823-86824,87294,87296,87300,87302 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k
........
r86521 | eric.araujo | 2010-11-18 17:38:46 +0100 (jeu., 18 nov. 2010) | 17 lines
Fix usage of :option: in the docs (#9312).
:option: is used to create a link to an option of python, not to mark
up any instance of any arbitrary command-line option. These were
changed to ````.
For modules which do have a command-line interface, lists of options
have been properly marked up with the program/cmdoption directives
combo. Options defined in such blocks can be linked to with :option:
later in the same file, they won’t link to an option of python.
Finally, the markup of command-line fragments in optparse.rst has
been cleaned to use ``x`` instead of ``"x"``, keeping that latter
form for actual Python strings.
Patch by Eli Bendersky and Éric Araujo.
........
r86632 | eric.araujo | 2010-11-21 04:09:17 +0100 (dim., 21 nov. 2010) | 2 lines
Style edits in followup to r86521 (#9312)
........
r86823 | eric.araujo | 2010-11-27 00:31:07 +0100 (sam., 27 nov. 2010) | 2 lines
Use link-generating markup (see #9312)
........
r86824 | eric.araujo | 2010-11-27 00:46:18 +0100 (sam., 27 nov. 2010) | 2 lines
Rewrap long lines + minor edits
........
r87294 | eric.araujo | 2010-12-16 01:07:01 +0100 (jeu., 16 déc. 2010) | 2 lines
No need to generate a link for something that’s just above.
........
r87296 | eric.araujo | 2010-12-16 01:23:30 +0100 (jeu., 16 déc. 2010) | 2 lines
Advertise “python -m” instead of direct filename.
........
r87300 | eric.araujo | 2010-12-16 02:40:26 +0100 (jeu., 16 déc. 2010) | 2 lines
Advertise “python -m test” over test.regrtest (r87296 followup)
........
r87302 | eric.araujo | 2010-12-16 03:10:11 +0100 (jeu., 16 déc. 2010) | 2 lines
Add versionadded directive missing from r78983.
........
2010-12-15 23:53:53 -04:00
|
|
|
parameters: ``-n`` opens the URL in a new browser window, if possible;
|
|
|
|
``-t`` opens the URL in a new browser page ("tab"). The options are,
|
2012-08-12 12:33:41 -03:00
|
|
|
naturally, mutually exclusive. Usage example::
|
|
|
|
|
|
|
|
python -m webbrowser -t "http://www.python.org"
|
2007-08-15 11:28:01 -03:00
|
|
|
|
|
|
|
The following exception is defined:
|
|
|
|
|
|
|
|
|
|
|
|
.. exception:: Error
|
|
|
|
|
|
|
|
Exception raised when a browser control error occurs.
|
|
|
|
|
|
|
|
The following functions are defined:
|
|
|
|
|
|
|
|
|
2012-05-22 05:27:40 -03:00
|
|
|
.. function:: open(url, new=0, autoraise=True)
|
2007-08-15 11:28:01 -03:00
|
|
|
|
2009-07-23 11:25:31 -03:00
|
|
|
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).
|
2007-08-15 11:28:01 -03:00
|
|
|
|
2009-04-04 10:45:49 -03:00
|
|
|
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.
|
|
|
|
|
2007-08-15 11:28:01 -03:00
|
|
|
.. 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) |
|
|
|
|
+-----------------------+-----------------------------------------+-------+
|
2012-04-18 16:48:09 -03:00
|
|
|
| ``'macosx'`` | :class:`MacOSX('default')` | \(3) |
|
2007-08-15 11:28:01 -03:00
|
|
|
+-----------------------+-----------------------------------------+-------+
|
2012-04-18 16:48:09 -03:00
|
|
|
| ``'safari'`` | :class:`MacOSX('safari')` | \(3) |
|
2012-03-31 12:22:47 -03:00
|
|
|
+-----------------------+-----------------------------------------+-------+
|
2016-03-11 15:32:12 -04:00
|
|
|
| ``'google-chrome'`` | :class:`Chrome('google-chrome')` | \(4) |
|
|
|
|
+-----------------------+-----------------------------------------+-------+
|
|
|
|
| ``'chrome'`` | :class:`Chrome('chrome')` | \(4) |
|
|
|
|
+-----------------------+-----------------------------------------+-------+
|
|
|
|
| ``'chromium'`` | :class:`Chromium('chromium')` | \(4) |
|
|
|
|
+-----------------------+-----------------------------------------+-------+
|
|
|
|
| ``'chromium-browser'``| :class:`Chromium('chromium-browser')` | \(4) |
|
|
|
|
+-----------------------+-----------------------------------------+-------+
|
2007-08-15 11:28:01 -03:00
|
|
|
|
|
|
|
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)
|
2008-09-13 14:41:16 -03:00
|
|
|
Only on Mac OS X platform.
|
2007-08-15 11:28:01 -03:00
|
|
|
|
2016-03-11 15:32:12 -04:00
|
|
|
(4)
|
|
|
|
Support for Chrome/Chromium has been added in version 2.7.5.
|
|
|
|
|
2007-08-15 11:28:01 -03:00
|
|
|
Here are some simple examples::
|
|
|
|
|
2009-12-23 22:54:53 -04:00
|
|
|
url = 'http://www.python.org/'
|
2007-08-15 11:28:01 -03:00
|
|
|
|
2009-01-03 16:55:06 -04:00
|
|
|
# Open URL in a new tab, if a browser window is already open.
|
2009-12-23 22:54:53 -04:00
|
|
|
webbrowser.open_new_tab(url + 'doc/')
|
2007-08-15 11:28:01 -03:00
|
|
|
|
|
|
|
# Open URL in new window, raising the window if possible.
|
|
|
|
webbrowser.open_new(url)
|
|
|
|
|
|
|
|
|
|
|
|
.. _browser-controllers:
|
|
|
|
|
|
|
|
Browser Controller Objects
|
|
|
|
--------------------------
|
|
|
|
|
2009-03-29 23:49:32 -03:00
|
|
|
Browser controllers provide these methods which parallel three of the
|
|
|
|
module-level convenience functions:
|
2007-08-15 11:28:01 -03:00
|
|
|
|
|
|
|
|
2012-05-22 05:27:40 -03:00
|
|
|
.. method:: controller.open(url, new=0, autoraise=True)
|
2007-08-15 11:28:01 -03:00
|
|
|
|
|
|
|
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
|
|
|
|
|
2009-05-17 05:55:00 -03:00
|
|
|
|
|
|
|
.. rubric:: Footnotes
|
|
|
|
|
|
|
|
.. [1] Executables named here without a full path will be searched in the
|
|
|
|
directories given in the :envvar:`PATH` environment variable.
|