webbrowser --- 方便的 Web 瀏覽器控制工具?

源碼: Lib/webbrowser.py


webbrowser 模塊提供了一個(gè)高層級(jí)接口,允許向用戶顯示基于 Web 的文檔。 在大多數(shù)情況下,只需調(diào)用此模塊的 open() 函數(shù)就可以了。

在 Unix 下,圖形瀏覽器在 X11 下是首選,但如果圖形瀏覽器不可用或 X11 顯示不可用,則將使用文本模式瀏覽器。 如果使用文本模式瀏覽器,則調(diào)用進(jìn)程將阻塞,直到用戶退出瀏覽器。

如果存在環(huán)境變量 BROWSER ,則將其解釋為 os.pathsep 分隔的瀏覽器列表,以便在平臺(tái)默認(rèn)值之前嘗試。 當(dāng)列表部分的值包含字符串 %s 時(shí),它被解釋為一個(gè)文字瀏覽器命令行,用于替換 %s 的參數(shù) URL ;如果該部分不包含 %s,則它只被解釋為要啟動(dòng)的瀏覽器的名稱。 1

對(duì)于非 Unix 平臺(tái),或者當(dāng) Unix 上有遠(yuǎn)程瀏覽器時(shí),控制過(guò)程不會(huì)等待用戶完成瀏覽器,而是允許遠(yuǎn)程瀏覽器在顯示界面上維護(hù)自己的窗口。 如果 Unix 上沒(méi)有遠(yuǎn)程瀏覽器,控制進(jìn)程將啟動(dòng)一個(gè)新的瀏覽器并等待。

腳本 webbrowser 可以用作模塊的命令行界面。它接受一個(gè) URL 作為參數(shù)。還接受以下可選參數(shù):-n 如果可能,在新的瀏覽器窗口中打開(kāi) URL ; -t 在新的瀏覽器頁(yè)面(“標(biāo)簽”)中打開(kāi) URL。這些選擇當(dāng)然是相互排斥的。用法示例:

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

定義了以下異常:

exception webbrowser.Error?

發(fā)生瀏覽器控件錯(cuò)誤時(shí)引發(fā)異常。

定義了以下函數(shù):

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

使用默認(rèn)瀏覽器顯示 url。 如果 new 為 0,則盡可能在同一瀏覽器窗口中打開(kāi) url。 如果 new 為 1,則盡可能打開(kāi)新的瀏覽器窗口。 如果 new 為 2,則盡可能打開(kāi)新的瀏覽器頁(yè)面(“標(biāo)簽”)。 如果 autoraise 為 “True”,則會(huì)盡可能置前窗口(請(qǐng)注意,在許多窗口管理器下,無(wú)論此變量的設(shè)置如何,都會(huì)置前窗口)。

請(qǐng)注意,在某些平臺(tái)上,嘗試使用此函數(shù)打開(kāi)文件名,可能會(huì)起作用并啟動(dòng)操作系統(tǒng)的關(guān)聯(lián)程序。 但是,這種方式不被支持也不可移植。

使用 url 參數(shù)會(huì)引發(fā) auditing event webbrowser.open

webbrowser.open_new(url)?

如果可能,在默認(rèn)瀏覽器的新窗口中打開(kāi) url,否則,在唯一的瀏覽器窗口中打開(kāi) url。

webbrowser.open_new_tab(url)?

如果可能,在默認(rèn)瀏覽器的新頁(yè)面(“標(biāo)簽”)中打開(kāi) url,否則等效于 open_new()。

webbrowser.get(using=None)?

返回瀏覽器類(lèi)型為 using 指定的控制器對(duì)象。 如果 usingNone,則返回適用于調(diào)用者環(huán)境的默認(rèn)瀏覽器的控制器。

webbrowser.register(name, constructor, instance=None, *, preferred=False)?

注冊(cè) name 瀏覽器類(lèi)型。 注冊(cè)瀏覽器類(lèi)型后, get() 函數(shù)可以返回該瀏覽器類(lèi)型的控制器。 如果沒(méi)有提供 instance,或者為 None,constructor 將在沒(méi)有參數(shù)的情況下被調(diào)用,以在需要時(shí)創(chuàng)建實(shí)例。 如果提供了 instance,則永遠(yuǎn)不會(huì)調(diào)用 constructor,并且可能是 None。

preferred 設(shè)置為 True 使得這個(gè)瀏覽器成為 get() 不帶參數(shù)調(diào)用的首選結(jié)果。 否則,只有在您計(jì)劃設(shè)置 BROWSER 變量,或使用與您聲明的處理程序的名稱相匹配的非空參數(shù)調(diào)用 get() 時(shí),此入口點(diǎn)才有用。

在 3.7 版更改: 添加了僅關(guān)鍵字參數(shù) preferred。

預(yù)定義了許多瀏覽器類(lèi)型。 此表給出了可以傳遞給 get() 函數(shù)的類(lèi)型名稱以及控制器類(lèi)的相應(yīng)實(shí)例化,這些都在此模塊中定義。

類(lèi)型名

類(lèi)名

備注

'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'

MacOSXOSAScript('default')

(3)

'safari'

MacOSXOSAScript('safari')

(3)

'google-chrome'

Chrome('google-chrome')

'chrome'

Chrome('chrome')

'chromium'

Chromium('chromium')

'chromium-browser'

Chromium('chromium-browser')

注釋:

  1. “Konqueror” 是 Unix 的 KDE 桌面環(huán)境的文件管理器,只有在 KDE 運(yùn)行時(shí)才有意義。 一些可靠地檢測(cè) KDE 的方法會(huì)很好;僅檢查 KDEDIR 變量是不夠的。 另請(qǐng)注意,KDE 2的 konqueror 命令,會(huì)使用名稱 “kfm”---此實(shí)現(xiàn)選擇運(yùn)行的 Konqueror 的最佳策略。

  2. 僅限 Windows 平臺(tái)。

  3. Only on macOS platform.

3.3 新版功能: 添加了對(duì) Chrome/Chromium 的支持。

Deprecated since version 3.11, will be removed in version 3.13: MacOSX is deprecated, use MacOSXOSAScript instead.

以下是一些簡(jiǎn)單的例子:

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

瀏覽器控制器對(duì)象?

瀏覽器控制器提供三個(gè)與模塊級(jí)便捷函數(shù)相同的方法:

webbrowser.name?

System-dependent name for the browser.

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

使用此控制器處理的瀏覽器顯示 url。 如果 new 為 1,則盡可能打開(kāi)新的瀏覽器窗口。 如果 new 為 2,則盡可能打開(kāi)新的瀏覽器頁(yè)面(“標(biāo)簽”)。

controller.open_new(url)?

如果可能,在此控制器處理的瀏覽器的新窗口中打開(kāi) url ,否則,在唯一的瀏覽器窗口中打開(kāi) url 。 別名 open_new()。

controller.open_new_tab(url)?

如果可能,在此控制器處理的瀏覽器的新頁(yè)面(“標(biāo)簽”)中打開(kāi) url,否則等效于 open_new()

備注

1

這里命名的不帶完整路徑的可執(zhí)行文件將在 PATH 環(huán)境變量給出的目錄中搜索。