Документация Python неофициальный перевод
Содержание страницы

20.1. webbrowser – Удобный контроллер веб-браузераwebbrowser – Convenient Web-browser controller

Модуль webbrowser предоставляет высокоуровневый интерфейс для отображения веб-документов пользователям. В большинстве случаев достаточно просто вызвать функцию open() из этого модуля, и всё будет работать правильно.

В Unix под X11 предпочтение отдаётся графическим браузерам, но если они недоступны или отсутствует X11-дисплей, будут использоваться текстовые браузеры. При использовании текстовых браузеров вызывающий процесс будет заблокирован до тех пор, пока пользователь не закроет браузер.

Если переменная окружения BROWSER существует, она интерпретируется как список браузеров для последовательного перебора, разделённый os.pathsep, который заменяет стандартный список браузеров платформы. Если значение части списка содержит строку %s, она интерпретируется как буквальная командная строка браузера, в которой аргумент URL подставляется вместо %s; если часть не содержит %s, она просто считается именем запускаемого браузера. [1]

На платформах, отличных от Unix, или когда в Unix доступен удалённый браузер, управляющий процесс не будет ждать, пока пользователь закончит работу с браузером, а позволит удалённому браузеру поддерживать свои собственные окна на дисплее. Если удалённые браузеры недоступны в Unix, управляющий процесс запустит новый браузер и будет ждать.

Скрипт webbrowser можно использовать как интерфейс командной строки для модуля. Он принимает URL в качестве аргумента. Также он принимает следующие необязательные параметры: -n – открывает URL в новом окне браузера, если это возможно; -t – открывает URL на новой странице браузера («вкладка»). Эти опции, естественно, взаимно исключают друг друга.

Определено следующее исключение:

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. Если using равно None, возвращает контроллер для браузера по умолчанию, соответствующего окружению вызывающего.
webbrowser.register(name, constructor, instance=None)

Регистрирует тип браузера name. После регистрации типа браузера функция get() может возвращать контроллер для этого типа. Если instance не указан или равен None, constructor будет вызван без параметров для создания экземпляра при необходимости. Если instance указан, constructor никогда не будет вызван и может быть None.

Эта точка входа полезна только если предполагается либо установить переменную BROWSER, либо вызвать get() с непустым аргументом, соответствующим имени объявленного обработчика.

Ряд типов браузеров предопределены. В этой таблице приведены имена типов, которые могут быть переданы функции 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)
'internet-config' InternetConfig (3)
'macosx' MacOSX('default') (4)

Примечания:

  1. «Konqueror» – это файловый менеджер для окружения рабочего стола KDE в Unix, и его имеет смысл использовать только при работающем KDE. Было бы неплохо иметь надёжный способ обнаружения KDE; переменная KDEDIR для этого недостаточна. Обратите также внимание, что имя «kfm» используется даже при запуске команды konqueror с KDE 2 – реализация выбирает наилучшую стратегию для запуска Konqueror.
  2. Только на платформах Windows.
  3. Только на платформах Mac OS; требуется стандартный модуль MacPython ic.
  4. Только на платформе Mac OS X.

Вот несколько простых примеров:

url = 'http://www.python.org/'

# Открыть URL в новой вкладке, если окно браузера уже открыто.
webbrowser.open_new_tab(url + 'doc/')

# Открыть URL в новом окне, по возможности поднимая окно на передний план.
webbrowser.open_new(url)

20.1.1. Объекты контроллера браузераBrowser Controller Objects

Контроллеры браузера предоставляют методы, соответствующие трём вспомогательным функциям уровня модуля:

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.