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)?

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

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

注冊(cè) name 瀏覽器類型。 注冊(cè)瀏覽器類型后, get() 函數(shù)可以返回該瀏覽器類型的控制器。 如果沒(méi)有提供 instance,或者為 Noneconstructor 將在沒(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ù)定義了許多瀏覽器類型。 此表給出了可以傳遞給 get() 函數(shù)的類型名稱以及控制器類的相應(yīng)實(shí)例化,這些都在此模塊中定義。

類型名

類名

備注

'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)境變量給出的目錄中搜索。