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

源碼: Lib/webbrowser.py


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

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

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

對于非 Unix 平臺,或者當 Unix 上有遠程瀏覽器時,控制過程不會等待用戶完成瀏覽器,而是允許遠程瀏覽器在顯示界面上維護自己的窗口。 如果 Unix 上沒有遠程瀏覽器,控制進程將啟動一個新的瀏覽器并等待。

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

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

定義了以下異常:

exception webbrowser.Error?

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

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

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

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

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

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

webbrowser.open_new(url)?

如果可能,在默認瀏覽器的新窗口中打開 url,否則,在唯一的瀏覽器窗口中打開 url。

webbrowser.open_new_tab(url)?

如果可能,在默認瀏覽器的新頁面(“標簽”)中打開 url,否則等效于 open_new()。

webbrowser.get(using=None)?

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

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

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

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

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

預定義了許多瀏覽器類型。 此表給出了可以傳遞給 get() 函數(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 運行時才有意義。 一些可靠地檢測 KDE 的方法會很好;僅檢查 KDEDIR 變量是不夠的。 另請注意,KDE 2的 konqueror 命令,會使用名稱 “kfm”---此實現(xiàn)選擇運行的 Konqueror 的最佳策略。

  2. 僅限 Windows 平臺。

  3. Only on macOS platform.

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

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

以下是一些簡單的例子:

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)

瀏覽器控制器對象?

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

webbrowser.name?

System-dependent name for the browser.

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

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