Python
Как открыть ссылку через Python: webbrowser, новая вкладка и запуск браузера
Чтобы открыть ссылку через Python в браузере, используйте стандартный модуль webbrowser. Он не требует установки дополнительных библиотек и подходит для простых задач: открыть сайт, локальный файл, страницу документации или ссылку после выполнения программы
Самый короткий пример
import webbrowser
webbrowser.open("https://aglamov.biz")
После запуска Python попросит систему открыть ссылку в браузере по умолчанию
Открыть ссылку в новой вкладке
Для новой вкладки используйте open_new_tab()
import webbrowser
webbrowser.open_new_tab("https://aglamov.biz/python-s-nulya")
Есть и вариант через open() с параметром new
import webbrowser
webbrowser.open("https://aglamov.biz/python-s-nulya", new=2)
Значение new=2 означает новую вкладку, если браузер это поддерживает
Открыть ссылку в новом окне
import webbrowser
webbrowser.open_new("https://aglamov.biz")
Или так
webbrowser.open("https://aglamov.biz", new=1)
На практике поведение зависит от браузера и настроек системы. Некоторые браузеры вместо нового окна все равно открывают новую вкладку
Проверьте, что ссылка начинается с http или https
Если пользователь вводит адрес, лучше проверить начало ссылки
import webbrowser
url = input("Введите ссылку: ")
if not url.startswith(("http://", "https://")):
url = "https://" + url
webbrowser.open_new_tab(url)
Теперь пользователь может ввести aglamov.biz, а программа сама добавит https://
Открыть несколько ссылок
Можно пройти по списку ссылок циклом
import webbrowser
links = [
"https://aglamov.biz/python-s-nulya",
"https://aglamov.biz/jazyki-programmirovanija/python",
"https://docs.python.org/3/library/webbrowser.html"
]
for link in links:
webbrowser.open_new_tab(link)
Не открывайте десятки вкладок сразу без предупреждения пользователя. Это неудобно и может выглядеть как ошибка программы
Открыть локальный HTML-файл
webbrowser умеет открывать не только сайты, но и локальные файлы
import webbrowser
from pathlib import Path
file_path = Path("index.html").resolve()
webbrowser.open(file_path.as_uri())
as_uri() превращает путь к файлу в ссылку формата file:///..., которую понимает браузер
Такой подход удобен, если Python сгенерировал HTML-отчет и нужно сразу показать его пользователю
Открытие ссылки и requests — не одно и то же
webbrowser.open() открывает ссылку в браузере для человека. Python не получает HTML-код страницы и не анализирует содержимое
import webbrowser
webbrowser.open("https://example.com")
Если вам нужно скачать страницу в Python-код, нужен другой подход, например библиотека requests
import requests
response = requests.get("https://example.com")
print(response.text[:200])
То есть выбор зависит от задачи
- открыть страницу пользователю —
webbrowser - получить HTML в коде —
requests - управлять браузером и нажимать кнопки — Selenium или Playwright
Как открыть ссылку в конкретном браузере
Иногда нужно не просто открыть браузер по умолчанию, а выбрать конкретный. Это возможно через webbrowser.get(), но путь и имя браузера зависят от системы
Пример может выглядеть так
import webbrowser
chrome = webbrowser.get("chrome")
chrome.open_new_tab("https://aglamov.biz")
Но на некоторых компьютерах имя chrome не будет найдено. Для учебных задач лучше начинать с браузера по умолчанию, а конкретный браузер подключать только при явной необходимости
Как открыть ссылку после условия
Частый сценарий: если пользователь выбрал пункт меню, открываем ссылку
import webbrowser
choice = input("Открыть курс Python? да/нет: ")
if choice.lower() == "да":
webbrowser.open_new_tab("https://aglamov.biz/python-s-nulya")
else:
print("Ок, не открываем")
Здесь lower() нужен, чтобы Да, ДА и да обрабатывались одинаково
Почему ссылка не открывается
Если код не открывает браузер, проверьте
- установлен ли браузер по умолчанию
- запускается ли код на сервере без графического интерфейса
- правильно ли написана ссылка
- не блокирует ли запуск среда разработки
- не запускаете ли вы код внутри контейнера или удаленной машины
На сервере без рабочего стола webbrowser.open() может ничего не показать, потому что там нет окна браузера. В таком случае нужно выводить ссылку в консоль или отправлять ее пользователю другим способом
Мини-практика
Напишите программу, которая предлагает выбрать один из трех материалов
import webbrowser
links = {
"1": "https://aglamov.biz/python-s-nulya",
"2": "https://aglamov.biz/jazyki-programmirovanija/python",
"3": "https://docs.python.org/3/library/webbrowser.html"
}
print("1 — курс Python с нуля")
print("2 — рубрика Python")
print("3 — документация webbrowser")
choice = input("Что открыть? ")
if choice in links:
webbrowser.open_new_tab(links[choice])
else:
print("Такого пункта нет")
После запуска попробуйте ввести 1, 2, 3 и неверное значение. Так вы потренируете словарь, условие, пользовательский ввод и открытие ссылок
Частые ошибки
Не добавлять http или https
Строка example.com может не открыться так, как ожидается. Лучше использовать полный адрес: https://example.com
Думать, что webbrowser скачивает страницу
Он только открывает ссылку в браузере. Для получения HTML нужен requests или другой HTTP-клиент
Запускать код на сервере и ждать окно браузера
На сервере без графического интерфейса открыть окно браузера обычно невозможно
Открывать слишком много вкладок циклом
Это раздражает пользователя и может подвесить браузер. Лучше спрашивать подтверждение
Что почитать дальше по Python
Если нужен общий маршрут по теме, откройте рубрику Python. Для соседних задач пригодятся эти разборы:
- Python открыть ссылку в новой вкладке: webbrowser и Selenium
- Как открыть элемент в новой вкладке Python: Selenium и рабочий пример
- Python как считает вкладки в браузере: window_handles в Selenium
- Как запустить расширение в браузере через Python: Selenium, Chrome profile и ограничения