21.1.webbrowser — Convenient Web-browser controller

Source code:Lib/webbrowser.py


Thewebbrowser module provides a high-level interface to allow displayingWeb-based documents to users. Under most circumstances, simply calling theopen() function from this module will do the right thing.

Under Unix, graphical browsers are preferred under X11, but text-mode browserswill be used if graphical browsers are not available or an X11 display isn’tavailable. If text-mode browsers are used, the calling process will block untilthe user exits the browser.

If the environment variableBROWSER exists, it is interpreted as theos.pathsep-separated list of browsers to try ahead of the platformdefaults. When the value of a list part contains the string%s, then it isinterpreted as a literal browser command line to be used with the argument URLsubstituted for%s; if the part does not contain%s, it is simplyinterpreted as the name of the browser to launch.[1]

For non-Unix platforms, or when a remote browser is available on Unix, thecontrolling process will not wait for the user to finish with the browser, butallow the remote browser to maintain its own windows on the display. If remotebrowsers are not available on Unix, the controlling process will launch a newbrowser and wait.

The scriptwebbrowser can be used as a command-line interface for themodule. It accepts a URL as the argument. It accepts the following optionalparameters:-n opens the URL in a new browser window, if possible;-t opens the URL in a new browser page (“tab”). The options are,naturally, mutually exclusive. Usage example:

python-mwebbrowser-t"http://www.python.org"

The following exception is defined:

exceptionwebbrowser.Error

Exception raised when a browser control error occurs.

The following functions are defined:

webbrowser.open(url,new=0,autoraise=True)

Displayurl using the default browser. Ifnew is 0, theurl is openedin the same browser window if possible. Ifnew is 1, a new browser windowis opened if possible. Ifnew is 2, a new browser page (“tab”) is openedif possible. Ifautoraise isTrue, the window is raised if possible(note that under many window managers this will occur regardless of thesetting 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, thisis neither supported nor portable.

webbrowser.open_new(url)

Openurl in a new window of the default browser, if possible, otherwise, openurl in the only browser window.

webbrowser.open_new_tab(url)

Openurl in a new page (“tab”) of the default browser, if possible, otherwiseequivalent toopen_new().

webbrowser.get(using=None)

Return a controller object for the browser typeusing. Ifusing isNone, return a controller for a default browser appropriate to thecaller’s environment.

webbrowser.register(name,constructor,instance=None)

Register the browser typename. Once a browser type is registered, theget() function can return a controller for that browser type. Ifinstance is not provided, or isNone,constructor will be called withoutparameters to create an instance when needed. Ifinstance is provided,constructor will never be called, and may beNone.

This entry point is only useful if you plan to either set theBROWSERvariable or callget() with a nonempty argument matching the name of ahandler you declare.

A number of browser types are predefined. This table gives the type names thatmay be passed to theget() function and the corresponding instantiationsfor the controller classes, all defined in this module.

Type NameClass NameNotes
'mozilla'Mozilla('mozilla') 
'firefox'Mozilla('mozilla') 
'netscape'Mozilla('netscape') 
'galeon'Galeon('galeon') 
'epiphany'Galeon('epiphany') 
'skipstone'BackgroundBrowser('skipstone') 
'kfmclient'Konqueror()(1)
'konqueror'Konqueror()(1)
'kfm'Konqueror()(1)
'mosaic'BackgroundBrowser('mosaic') 
'opera'Opera() 
'grail'Grail() 
'links'GenericBrowser('links') 
'elinks'Elinks('elinks') 
'lynx'GenericBrowser('lynx') 
'w3m'GenericBrowser('w3m') 
'windows-default'WindowsDefault(2)
'macosx'MacOSX('default')(3)
'safari'MacOSX('safari')(3)
'google-chrome'Chrome('google-chrome') 
'chrome'Chrome('chrome') 
'chromium'Chromium('chromium') 
'chromium-browser'Chromium('chromium-browser') 

Notes:

  1. “Konqueror” is the file manager for the KDE desktop environment for Unix, andonly makes sense to use if KDE is running. Some way of reliably detecting KDEwould be nice; theKDEDIR variable is not sufficient. Note also thatthe name “kfm” is used even when using thekonqueror command with KDE2 — the implementation selects the best strategy for running Konqueror.
  2. Only on Windows platforms.
  3. Only on Mac OS X platform.

New in version 3.3:Support for Chrome/Chromium has been added.

Here are some simple examples:

url='http://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)

21.1.1. Browser Controller Objects

Browser controllers provide these methods which parallel three of themodule-level convenience functions:

controller.open(url,new=0,autoraise=True)

Displayurl using the browser handled by this controller. Ifnew is 1, a newbrowser window is opened if possible. Ifnew is 2, a new browser page (“tab”)is opened if possible.

controller.open_new(url)

Openurl in a new window of the browser handled by this controller, ifpossible, otherwise, openurl in the only browser window. Aliasopen_new().

controller.open_new_tab(url)

Openurl in a new page (“tab”) of the browser handled by this controller, ifpossible, otherwise equivalent toopen_new().

Footnotes

[1]Executables named here without a full path will be searched in thedirectories given in thePATH environment variable.