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

源碼: Lib/webbrowser.py


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

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

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

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

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

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

定義了以下異常:

exception webbrowser.Error?

發生瀏覽器控件錯誤時引發異常。

定義了以下函數:

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

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

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

webbrowser.open_new(url)?

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

webbrowser.open_new_tab(url)?

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

webbrowser.get(using=None)?

返回瀏覽器類型為 using 指定的控制器對象。 如果 usingNone,則返回適用于調用者環境的默認瀏覽器的控制器。

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

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

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

在 3.7 版更改: 添加了僅關鍵字參數 preferred

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

類型名

類名

注釋

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

'chrome'

Chrome('chrome')

'chromium'

Chromium('chromium')

'chromium-browser'

Chromium('chromium-browser')

注釋:

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

  2. 僅限 Windows 平臺。

  3. 僅限 Mac OS X 平臺。

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

以下是一些簡單的例子:

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

瀏覽器控制器對象?

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

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

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