webbrowser — 便捷的 Web 瀏覽器控制器

原始碼: Lib/webbrowser.py


webbrowser 模組提供了一個高階介面,允許向用戶顯示基於 Web 的文件。 在大多數情況下,只需呼叫此模組中的 open() 函式即可實現正確的操作。

在 Unix 下,首選 X11 下的圖形瀏覽器,但如果沒有圖形瀏覽器或沒有 X11 顯示,則將使用文字模式瀏覽器。 如果使用文字模式瀏覽器,則呼叫程序將阻塞,直到使用者退出瀏覽器。

如果環境變數 BROWSER 存在,則將其解釋為嘗試在平臺預設設定之前嘗試的瀏覽器列表,該列表以 os.pathsep 分隔。 當列表部分的某個值包含字串 %s 時,則將其解釋為文字瀏覽器命令列,其中引數 URL 替換為 %s;如果該部分不包含 %s,則將其簡單地解釋為要啟動的瀏覽器的名稱。 [1]

對於非 Unix 平臺,或者當 Unix 上有遠端瀏覽器可用時,控制程序不會等待使用者完成瀏覽器的操作,而是允許遠端瀏覽器在其自己的顯示器上維護視窗。 如果 Unix 上沒有遠端瀏覽器可用,則控制程序將啟動一個新瀏覽器並等待。

在 iOS 上,BROWSER 環境變數以及任何控制自動提升、瀏覽器首選項和新標籤頁/視窗建立的引數都將被忽略。 網頁將始終在使用者首選的瀏覽器中開啟,在新標籤頁中開啟,並且將瀏覽器帶到前臺。 在 iOS 上使用 webbrowser 模組需要 ctypes 模組。 如果 ctypes 不可用,則對 open() 的呼叫將失敗。

指令碼 webbrowser 可以用作該模組的命令列介面。 它接受一個 URL 作為引數。 它接受以下可選引數

  • -n/--new-window 如果可能,則在新瀏覽器視窗中開啟 URL。

  • -t/--new-tab 在新的瀏覽器頁面(“標籤頁”)中開啟 URL。

這些選項自然是互斥的。 用法示例

python -m webbrowser -t "https://python.club.tw"

可用性:不是 WASI,也不是 Android。

定義了以下異常

exception webbrowser.Error

當發生瀏覽器控制錯誤時引發的異常。

定義了以下函式

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

使用預設瀏覽器顯示 url。 如果 new 為 0,則儘可能在同一瀏覽器視窗中開啟 url。 如果 new 為 1,則儘可能開啟一個新的瀏覽器視窗。 如果 new 為 2,則儘可能開啟新的瀏覽器頁面(“標籤頁”)。 如果 autoraiseTrue,則儘可能提升視窗(請注意,在許多視窗管理器下,無論此變數的設定如何,都會發生這種情況)。

如果瀏覽器成功啟動,則返回 True,否則返回 False

請注意,在某些平臺上,嘗試使用此函式開啟檔名可能會起作用並啟動作業系統的相關程式。 但是,這既不支援也不可移植。

使用引數 url 引發 審計事件 webbrowser.open

webbrowser.open_new(url)

如果可能,在預設瀏覽器的新視窗中開啟 url,否則,在唯一的瀏覽器視窗中開啟 url

如果瀏覽器成功啟動,則返回 True,否則返回 False

webbrowser.open_new_tab(url)

如果可能,在預設瀏覽器的新頁面(“標籤頁”)中開啟 url,否則等效於 open_new()

如果瀏覽器成功啟動,則返回 True,否則返回 False

webbrowser.get(using=None)

返回瀏覽器型別 using 的控制器物件。 如果 usingNone,則返回適用於呼叫者環境的預設瀏覽器的控制器。

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

註冊瀏覽器型別 name。 註冊瀏覽器型別後,get() 函式可以返回該瀏覽器型別的控制器。 如果未提供 instance,或為 None,則在需要時將呼叫不帶引數的 constructor 來建立例項。 如果提供了 instance,則永遠不會呼叫 constructor,並且 constructor 可能為 None

preferred 設定為 True 會使此瀏覽器成為沒有引數的 get() 呼叫的首選結果。 否則,此入口點僅當您計劃設定 BROWSER 變數或使用與您宣告的處理程式的名稱匹配的非空引數呼叫 get() 時才有用。

在 3.7 版本中更改:添加了僅關鍵字引數 preferred

預定義了許多瀏覽器型別。 此表提供了可以傳遞給 get() 函式的型別名稱,以及控制器類的相應例項化,所有這些都在此模組中定義。

型別名稱

類名稱

備註

'mozilla'

Mozilla('mozilla')

'firefox'

Mozilla('mozilla')

'epiphany'

Epiphany('epiphany')

'kfmclient'

Konqueror()

(1)

'konqueror'

Konqueror()

(1)

'kfm'

Konqueror()

(1)

'opera'

Opera()

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

'iosbrowser'

IOSBrowser

(4)

備註

  1. “Konqueror” 是用於 Unix 的 KDE 桌面環境的檔案管理器,只有在 KDE 執行時才有意義使用。如果能可靠地檢測 KDE 就好了; KDEDIR 變數是不夠的。還要注意,即使使用帶有 KDE 2 的 konqueror 命令,也會使用 “kfm” 這個名稱 —— 實現會選擇執行 Konqueror 的最佳策略。

  2. 僅在 Windows 平臺上。

  3. 僅在 macOS 上。

  4. 僅在 iOS 上。

3.2 版本新增: 添加了一個新的 MacOSXOSAScript 類,並在 Mac 上代替之前的 MacOSX 類使用。這增加了對開啟當前未設定為作業系統預設瀏覽器的支援。

3.3 版本新增: 增加了對 Chrome/Chromium 的支援。

3.12 版本更改: 移除了對幾個過時瀏覽器的支援。移除的瀏覽器包括 Grail、Mosaic、Netscape、Galeon、Skipstone、Iceape 以及 Firefox 35 及以下版本。

3.13 版本更改: 增加了對 iOS 的支援。

這裡有一些簡單的示例

url = 'https://docs.python.club.tw/'

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

瀏覽器控制器物件

瀏覽器控制器提供了這些方法,它們與模組級便利函式中的三個相對應

controller.name

瀏覽器系統相關的名稱。

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

腳註