Python
Python открыть ссылку в новой вкладке: webbrowser и Selenium
Если вам нужно из Python открыть сайт в браузере, чаще всего достаточно стандартного модуля webbrowser. Он уже входит в Python, его не нужно отдельно устанавливать через pip, и для первой задачи это самый простой путь
Но есть важное разделение. webbrowser умеет открыть ссылку, но не умеет управлять страницей после открытия. Если вам нужно нажимать кнопки, проверять текст, переключаться между вкладками и собирать данные, нужен Selenium
Короткий ответ
Для простой новой вкладки используйте webbrowser.open_new_tab()
import webbrowser
url = "https://aglamov.biz/python-s-nulya"
webbrowser.open_new_tab(url)
После запуска скрипта Python попросит операционную систему открыть этот адрес в браузере по умолчанию. Обычно ссылка появляется в новой вкладке уже открытого браузера
Как запустить пример
Создайте файл open_tab.py, вставьте код и выполните его в терминале
python open_tab.py
На macOS и Linux иногда команда называется python3
python3 open_tab.py
Если браузер не открылся, проверьте, установлен ли браузер по умолчанию и запускается ли Python из обычного пользовательского сеанса, а не из изолированной серверной среды без графического интерфейса
Открытие нескольких ссылок
Можно открыть несколько вкладок подряд. Но с этим лучше не злоупотреблять: браузер может посчитать такие действия навязчивыми, а пользователь быстро потеряет контроль над вкладками
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)
Такой код удобен для личных скриптов: открыть набор рабочих ссылок, документацию, внутреннюю базу знаний или страницы проекта
Как открыть ссылку из переменной
Адрес не обязан быть написан прямо в вызове функции. Его можно собрать заранее, получить из файла, из списка или из пользовательского ввода
import webbrowser
domain = "https://aglamov.biz"
page = "/python-s-nulya"
url = domain + page
webbrowser.open_new_tab(url)
Для новичка здесь важно следить, чтобы итоговая строка была полноценной ссылкой: с https://, доменом и правильным путем
Когда webbrowser не подходит
webbrowser открывает ссылку, но дальше почти ничего не контролирует. Вы не сможете надежно узнать, загрузилась ли страница, найти кнопку, взять текст со страницы или переключиться на конкретную вкладку
Если задача звучит так, вам нужен Selenium:
- открыть ссылку и проверить заголовок страницы
- открыть результат поиска в новой вкладке
- кликнуть по кнопке после загрузки
- заполнить форму
- получить текст из блока на странице
- перейти между несколькими вкладками и собрать данные
Минимальный пример с Selenium выглядит так
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://aglamov.biz/python-s-nulya")
driver.switch_to.new_window("tab")
driver.get("https://aglamov.biz/jazyki-programmirovanija/python")
print(driver.title)
Здесь Python уже не просто просит систему открыть ссылку. Он запускает браузер под управлением Selenium и может продолжать работать с этой страницей
Как выбрать способ
Если вы делаете личный скрипт «открой мне сайт», берите webbrowser. Это быстрее, проще и не требует настройки драйверов
Если вы делаете парсер, автотест, проверку страницы или учебный пример по автоматизации браузера, берите Selenium. Он сложнее, зато дает контроль над вкладками, окнами, элементами и ожиданиями
Мини-практика
Сделайте файл open_python_links.py и откройте из него две вкладки: курс Python с нуля и рубрику Python. После этого замените одну ссылку на любой другой адрес и проверьте, что браузер открывает именно новый вариант
Чтобы закрепить тему, добавьте список из трех ссылок и откройте их циклом. Это простой способ увидеть, как Python работает со списками и строками в реальной бытовой задаче
Частые ошибки
Ошибка первая: писать адрес без протокола. Строка
aglamov.biz/python-s-nulyaможет быть воспринята не как ссылка, а как локальный путь или поисковый запрос. Лучше писать полный адресhttps://aglamov.biz/python-s-nulya
Ошибка вторая: ждать, что webbrowser вернет содержимое страницы. Модуль открывает браузер, но не скачивает HTML и не дает доступ к кнопкам
Ошибка третья: запускать пример на сервере без графического интерфейса. Там может не быть обычного браузера, поэтому открытие вкладки физически некуда вывести
Ошибка четвертая: использовать open_new_tab() для автоматизации сайта. Для автоматики лучше сразу перейти к Selenium, чтобы не упереться в отсутствие контроля
Что почитать дальше по Python
Если нужен общий маршрут по теме, откройте рубрику Python. Для соседних задач пригодятся эти разборы:
- Как открыть элемент в новой вкладке Python: Selenium и рабочий пример
- Как открыть ссылку через Python: webbrowser, новая вкладка и запуск браузера
- Python как считает вкладки в браузере: window_handles в Selenium
- Python сразу закрывает браузер: как исправить в Selenium и обычном запуске