webbrowser — Удобный контроллер веб-браузера


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

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

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

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

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

python -m webbrowser -t "https://digitology.tech/"

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

exception webbrowser.Error

Вызывается исключение при возникновении ошибки управления браузером.

Определены следующие функции:

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

Открывает url, используя браузер по умолчанию. Если new равен 0, url открывается в том же окне браузера, если это возможно. Если new равен 1, по возможности открывается новое окно браузера. Если new равен 2, по возможности открывается новая страница браузера («вкладка»). Если autoraise равен True, окно вызывается, если это возможно (обратите внимание, что во многих оконных менеджерах это происходит независимо от установки этой переменной).

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

Вызывает событие аудита webbrowser.open с аргументом url.

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, *, preferred=False)

Регистрирует тип браузера name. После регистрации типа браузера функция get() может возвращать контроллер для данного типа браузера. Если instance не указан или None, constructor будет вызываться без параметров для создания экземпляра при необходимости. Если указан 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» — это файловый менеджер для среды рабочего стола KDE для Unix, и его имеет смысл использовать только в том случае, если работает KDE. Неплохо было бы найти какой-нибудь способ надежного обнаружения KDE; переменной KDEDIR недостаточно. Также обратите внимание, что имя «kfm» используется даже при использовании команды konqueror с KDE 2. Реализация выбирает наилучшую стратегию для запуска Konqueror.
  2. Только на платформах Windows.
  3. Только на платформе Mac OS X.

Добавлено в версии 3.3: Добавлена поддержка Chrome/Chromium.

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

url = 'https://digitology.tech/'

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

# Открывает URL-адрес в новом окне, подняв окно, если это возможно.
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.