20.1. webbrowser —方便的 Web 浏览器控制器

源代码: Lib/webbrowser.py


webbrowser模块提供了一个高级界面,允许向用户显示基于 Web 的文档。在大多数情况下,只需从此模块调用open()函数即可完成正确的操作。

在 Unix 下,图形浏览器是 X11 的首选,但如果图形浏览器不可用或 X11 显示器不可用,则将使用文本模式浏览器。如果使用文本模式浏览器,则调用过程将一直阻塞,直到用户退出浏览器为止。

如果环境变量 BROWSER存在,则将其解释为覆盖平台默认浏览器列表,作为按 Sequences try的os.pathsep分隔的浏览器列表。当列表部分的值包含字符串%s时,它将被解释为原义的浏览器命令行,并使用参数 URL 代替%s;如果该部分不包含%s,则仅将其解释为要启动的浏览器的名称。 [1]

对于非 Unix 平台,或者在 Unix 上提供远程浏览器时,控制过程将不会 await 用户完成浏览器的操作,而是允许远程浏览器在显示屏上维护其自己的窗口。如果 Unix 上没有远程浏览器,则控制过程将启动新的浏览器并 await。

脚本 webbrowser 可用作模块的命令行界面。它接受 URL 作为参数。它接受以下可选参数:-n尽可能在新的浏览器窗口中打开 URL; -t在新的浏览器页面(“标签”)中打开 URL。这些选项自然是互斥的。用法示例:

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

定义了以下异常:

  • exception webbrowser. Error
    • 当浏览器控件发生错误时引发异常。

定义了以下Function:

  • webbrowser. open(* url new = 0 autoraise = True *)
    • 使用默认浏览器显示* url 。如果 new 为 0,则在可能的情况下在同一浏览器窗口中打开 url 。如果 new 为 1,则如果可能,将打开一个新的浏览器窗口。如果 new 为 2,则如果可能,将打开一个新的浏览器页面(“选项卡”)。如果 autoraise *为True,则将窗口升起(请注意,在许多窗口 Management 器下,无论此变量的设置如何,都会发生此情况)。

请注意,在某些平台上,try使用此Function打开文件名可能会起作用并启动 os 的关联程序。但是,既不支持也不是可移植的。

在版本 2.5 中更改:现在可以是 2.

  • webbrowser. open_new(* url *)

    • 如果可能,请在默认浏览器的新窗口中打开* url ,否则,请在唯一的浏览器窗口中打开 url *。
  • webbrowser. open_new_tab(* url *)

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

2.5 版的新Function。

  • webbrowser. get([* name *])

    • 返回浏览器类型* name 的控制器对象。如果 name *为空,则返回适合于调用者环境的默认浏览器的控制器。
  • webbrowser. register(* name constructor * [,* instance *])

    • 注册浏览器类型* name 。注册浏览器类型后,get()函数可以返回该浏览器类型的控制器。如果未提供 instance None,则将在不需要参数的情况下调用 constructor 来创建实例。如果提供了 instance ,则 constructor *将永远不会被调用,并且可能是None

仅当您计划设置 BROWSER变量或使用与您语句的处理程序名称匹配的非空参数调用get()时,此入口点才有用。

sched 义了多种浏览器类型。该表提供了可以传递给get()函数的类型名称以及控制器类的相应实例化,所有这些都在此模块中定义。

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')(4)
'chrome'Chrome('chrome')(4)
'chromium'Chromium('chromium')(4)
'chromium-browser'Chromium('chromium-browser')(4)

Notes:

  • “ Konqueror”是用于 Unix 的 KDE 桌面环境的文件 Management 器,仅在运行 KDE 时才有意义。可靠地检测 KDE 的某种方法将是不错的。 KDEDIR变量还不够。还要注意,即使在 KDE 2 中使用 konqueror 命令时,也会使用名称“ kfm” —该实现选择了运行 Konqueror 的最佳策略。

  • 仅在 Windows 平台上。

  • 仅在 Mac OS X 平台上。

  • 在 2.7.5 版中添加了对 Chrome/Chromium 的支持。

以下是一些简单的示例:

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)

20.1.1. 浏览器控制器对象

浏览器控制器提供了与三种模块级便捷Function并行的方法:

  • 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()

2.5 版的新Function。

Footnotes

  • [1]
    • 将在 PATH环境变量给定的目录中搜索此处没有完整路径的可执行文件。