21.1. webbrowser — 方便的浏览器操作库

源代码: Lib / webbrowser.py

webbrowser 模块提供了一个可以向用户展示Web文档的高级接口。在绝大多数情况下,使用本模块的open() 函数即可。

在Unix环境下,图形浏览器通常依赖 X11,当图形浏览器不可用或X11不可用时,文本模式的浏览器就派上用场了。如果使用文本模式的浏览器,则调用进程将阻塞直到用户退出浏览器(译注:本句需要更易于理解的翻译)。

如果环境变量BROWSER存在,它被解释为os.pathsep-separated list of browsers to try ahead of the platform defaults.当列表部分的值包含字符串%s时,它被解释为要与参数URL替换为%s一起使用的字面值浏览器命令行;如果该部分不包含%s,它只是被解释为要启动的浏览器的名称。[1]

对于非Unix平台,或当Unix上有远程浏览器时,控制进程不会等待用户完成浏览器,但允许远程浏览器在显示器上保持自己的窗口。如果远程浏览器在Unix上不可用,则控制进程将启动一个新的浏览器并等待。

脚本webbrowser 可以用作命令行接口。它接受 URL 作为参数。它也接受如下可选参数:-n 如果可以,在新浏览器窗口打开URL; -t 在浏览器新标签页(TAB)打开URL。当然,这两个选项是互斥的,不可共存。用法示例︰

python -m webbrowser -t "http://www.python.org"

异常定义:

exception webbrowser.Error

浏览器控制引发的异常。

可用函数:

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

调用默认浏览器打开 url如果new参数为0,将尽可能在同一个浏览器窗口打开 url如果new参数为1,将使用新的浏览器窗口打开指定url。如果 new参数为2,则使用新浏览器标签页(TAB)打开。如果autoraiseTrue,则窗口会被调用(请注意,在许多窗口管理器下,不管此变量的设置如何)。

请注意,在某些平台上,尝试使用此函数打开文件名,可能会工作并启动操作系统的关联程序。但是,这既不支持也不便携。

webbrowser.open_new(url)

如果可能,在默认浏览器的新窗口中打开url,否则,在唯一的浏览器窗口中打开url

webbrowser.open_new_tab(url)

如果可能,在默认浏览器的新页面(“标签”)中打开url,否则等效于open_new()

webbrowser.get(using=None)

使用返回浏览器类型的控制器对象。如果使用None,则返回适用于调用方环境的默认浏览器的控制器。

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

注册浏览器类型名称一旦注册了浏览器类型,get()函数可以返回该浏览器类型的控制器。如果未提供实例或者None,则会调用构造函数,而无需创建实例。如果提供实例,则构造函数将永远不被调用,并且可以是None

此入口点仅在计划设置 BROWSER变量或调用get()时使用非空参数匹配处理程序。

预定义了多种浏览器类型。该表给出可以传递到get()函数的类型名称以及控制器类的对应实例化,这些都在本模块中定义。

类型名称班级名称备注
'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')

备注:

  1. “Konqueror”是Unix的KDE桌面环境的文件管理器,只有在KDE正在运行时才有意义。一些可靠的检测KDE的方法会很好; KDEDIR变量不足。还要注意,即使在使用带有KDE 2的konqueror命令时也使用名称“kfm” - 实现选择了运行Konqueror的最佳策略。
  2. 仅在Windows平台上。
  3. 仅在Mac OS X平台上。

版本3.3中的新功能:已添加对Chrome / Chromium的支持。

这里有一些简单的例子:

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

浏览器控制器提供了这些方法,它们并行了三个模块级的便利功能:

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

使用此控制器处理的浏览器显示url如果new为1,则尽可能打开新的浏览器窗口。如果new为2,则尽可能打开新的浏览器页面(“选项卡”)。

controller.open_new(url)

如果可能,在此控制器处理的浏览器的新窗口中打开url,否则在唯一的浏览器窗口中打开url别名open_new()

controller.open_new_tab(url)

如果可能,在此控制器处理的浏览器的新页面(“标签”)中打开url,否则等效于open_new()

脚注

[1]将在 PATH