# `webbrowser` — Convenient web-browser controller

Вихідний код: Lib/webbrowser.py

Модуль `webbrowser` забезпечує інтерфейс високого рівня, який дозволяє відображати веб-документи користувачам. У більшості випадків простий виклик функції `open()` з цього модуля буде правильним.

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

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

Для платформ, відмінних від Unix, або коли в Unix доступний віддалений браузер, процес керування не чекатиме, поки користувач закінчить роботу з браузером, а дозволить віддаленому браузеру підтримувати власні вікна на дисплеї. Якщо віддалені браузери недоступні в Unix, процес керування запустить новий браузер і зачекає.

On iOS, the `BROWSER` environment variable, as well as any arguments controlling autoraise, browser preference, and new tab/window creation will be ignored. Web pages will always be opened in the user’s preferred browser, in a new tab, with the browser being brought to the foreground. The use of the `webbrowser` module on iOS requires the `ctypes` module. If `ctypes` isn’t available, calls to `open()` will fail.

The script webbrowser can be used as a command-line interface for the module. It accepts a URL as the argument. It accepts the following optional parameters:

- `-n`/`--new-window` opens the URL in a new browser window, if possible.

- `-t`/`--new-tab` opens the URL in a new browser page («tab»).

The options are, naturally, mutually exclusive. Usage example:

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

Availability: not WASI, not Android.

Визначено такий виняток:

exception webbrowser.Error

  Виняток виникає, коли виникає помилка керування браузером.

Визначаються такі функції:

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

  Відображати url за допомогою браузера за умовчанням. Якщо new дорівнює 0, url відкривається в тому ж вікні браузера, якщо це можливо. Якщо new дорівнює 1, відкривається нове вікно браузера, якщо це можливо. Якщо new дорівнює 2, за можливості відкривається нова сторінка браузера («вкладка»). Якщо autoraise має значення `True`, вікно відкривається, якщо це можливо (зверніть увагу, що в багатьох віконних менеджерах це відбуватиметься незалежно від налаштування цієї змінної).

  Returns `True` if a browser was successfully launched, `False` otherwise.

  Зауважте, що на деяких платформах спроба відкрити ім’я файлу за допомогою цієї функції може спрацювати та запустити відповідну програму операційної системи. Однак це не підтримується та не переноситься.

  Викликає подію аудиту `webbrowser.open` з аргументом `url`.

webbrowser.open_new(url)

  Відкрийте url у новому вікні браузера за замовчуванням, якщо можливо, інакше відкрийте url в єдиному вікні браузера.

  Returns `True` if a browser was successfully launched, `False` otherwise.

webbrowser.open_new_tab(url)

  Відкрийте url на новій сторінці («вкладці») веб-переглядача за умовчанням, якщо це можливо, інакше еквівалентно `open_new()`.

  Returns `True` if a browser was successfully launched, `False` otherwise.

webbrowser.get(using=None)

  Повертає об’єкт контролера для типу браузера using. Якщо using має значення `None`, поверніть контролер для браузера за замовчуванням, який відповідає середовищу абонента.

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

  Зареєструйте тип браузера ім’я. Після реєстрації типу браузера функція `get()` може повернути контролер для цього типу браузера. Якщо екземпляр не надано або має значення `None`, конструктор буде викликано без параметрів для створення екземпляра за потреби. Якщо надано екземпляр, конструктор ніколи не буде викликаний і може бути `None`.

  Якщо встановити preferred на `True`, цей браузер стане кращим результатом для виклику `get()` без аргументів. В іншому випадку ця точка входу корисна, лише якщо ви плануєте встановити змінну `BROWSER` або викликати `get()` з непорожнім аргументом, який відповідає імені обробника, який ви оголошуєте.

  Змінено в версії 3.7: Додано переважний параметр лише для ключового слова.

Кілька типів браузерів визначено заздалегідь. У цій таблиці наведено назви типів, які можна передати функції `get()`, і відповідні екземпляри для класів контролерів, усі визначені в цьому модулі.

Тип імені | Назва класу | Примітки
--- | --- | ---
`'mozilla'` | `Mozilla('mozilla')` |
`'firefox'` | `Mozilla('mozilla')` |
`'Богоявлення''` | `Epiphany('epiphany')` |
`'kfmclient'` | `Konqueror()` | (1)
`'завойовник'` | `Konqueror()` | (1)
`'kfm''` | `Konqueror()` | (1)
`'опера'` | `Opera()` |
`'посилання'` | `GenericBrowser('links')` |
`'elinks'` | `Elinks('elinks')` |
`'рись''` | `GenericBrowser('lynx')` |
`'w3m'` | `GenericBrowser('w3m')` |
`'windows-default'` | `WindowsDefault` | (2)
`'macosx'` | `MacOSXOSAScript('default')` | (3)
`''сафарі'` | `MacOSXOSAScript('safari')` | (3)
`'google-chrome'` | `Chrome('google-chrome')` |
`'хром''` | `Chrome('chrome')` |
`'хром''` | `Chromium('chromium')` |
`'chromium-браузер'` | `Chromium('chromium-browser')` |
`'iosbrowser'` | `IOSBrowser` | (4)

Примітки:

1. «Konqueror» is the file manager for the KDE desktop environment for Unix, and only makes sense to use if KDE is running. Some way of reliably detecting KDE would be nice; the `KDEDIR` variable is not sufficient. Note also that the name «kfm» is used even when using the konqueror command with KDE 2 — the implementation selects the best strategy for running Konqueror.

2. Тільки на платформах Windows.

3. Only on macOS.

4. Only on iOS.

Added in version 3.2: A new `MacOSXOSAScript` class has been added and is used on Mac instead of the previous `MacOSX` class. This adds support for opening browsers not currently set as the OS default.

Added in version 3.3: Додано підтримку Chrome/Chromium.

Змінено в версії 3.12: Support for several obsolete browsers has been removed. Removed browsers include Grail, Mosaic, Netscape, Galeon, Skipstone, Iceape, and Firefox versions 35 and below.

Змінено в версії 3.13: Support for iOS has been added.

Ось декілька простих прикладів:

    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)

## Об’єкти контролера браузера

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

controller.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]

Виконувані файли, названі тут без повного шляху, шукатимуть у каталогах, указаних у змінній середовища `PATH`.