Как открыть ссылку в Python. Работа с WebBrowser и решение проблемы с Internet Explorer
В ходе работы над курсачом для универа столкнулся со стандартным модулем Python — WebBrowser. Через этот модуль я хотел реализовать работу голосового помощника — Lora с дефолтным браузером, но всё пошло не так гладко как ожидалось. Давайте для начала расскажу вам что это за модуль и как он вообще работает.
WebBrowser — это вшитый в Python модуль, который предоставляет собой высокоуровневый интерфейс, позволяющий просматривать веб-документы.
Для начала работы импортируйте модуль командой:
import webbrowser
Теперь возникает выбор как открыть ссылку. Есть два стула:
1. Написать через одну строчку:
webbrowser.open(url, new=0, autoraise=True)
webbrowser.open('https://vk.com', new=2)
Если new = 0, URL-адрес открывается, если это возможно, в том же окне браузера. Если переменная new = 1, открывается новое окно браузера, если это возможно. Если new = 2, открывается новая страница браузера («вкладка»), если это возможно.
Значение autoraise можно смело пропускать, ибо оно открывает браузер поверх всех окон, а большинство современных браузеров плюёт на эту переменную даже в значении False.
2. Не мучиться с запоминанием параметров new и писать по-человечески:
webbrowser.open_new(url)
Данная конструкция открывает URL-адрес в новом ОКНЕ браузера по умолчанию, если это возможно, в противном случае откроет URL-адрес в единственном окне браузера.
webbrowser.open_new_tab(url)
В этом случае URL-адрес откроется на новой странице (”tab») браузера по умолчанию, если это возможно, в противном случае эквивалентно open_new ().
Предположим, что вам не нужен браузер по умолчанию. Для выбора браузера существует классная команда .get()
webbrowser.get(using=None)
Грубо говоря, вы просто указываете какой браузер вам использовать.
Например, открытие новой вкладки в Google Chrome:
webbrowser.get(using='google-chrome').open_new_tab('https://vk.com')
Таблица названий браузеров:
| Type Name | Class Name |
|---|---|
| ‘mozilla’ | Mozilla(‘mozilla’) |
| ‘firefox’ | Mozilla(‘mozilla’) |
| ‘netscape’ | Mozilla(‘netscape’) |
| ‘galeon’ | Galeon(‘galeon’) |
| ‘epiphany» | Galeon(‘epiphany’) |
| ‘skipstone’ | BackgroundBrowser(‘skipstone’) |
| ‘kfmclient’ | Konqueror() |
| ‘konqueror» | Konqueror() |
| ‘kfm’ | Konqueror() |
| ‘mosaic’ | BackgroundBrowser(‘mosaic’) |
| ‘opera’ | Opera() |
| ‘grail’ | Grail() |
| ‘links’ | GenericBrowser(‘links’) |
| ‘elinks’ | Elinks(‘elinks’) |
| ‘lynx’ | GenericBrowser(‘lynx’) |
| ‘w3m’ | GenericBrowser(‘w3m’) |
| ‘windows-default’ | WindowsDefault |
| ‘macosx’ | MacOSX(‘default’) |
| ‘safari’ | MacOSX(‘safari’) |
| ‘google-chrome’ | Chrome(‘google-chrome’) |
| ‘chrome» | Chrome(‘chrome’) |
| ‘chromium» | Chromium(‘chromium’) |
| ‘chromium-browser’ | Chromium(‘chromium-browser’) |
Но не всегда получается обойтись одним только .get() и в этом случае на помощь приходит функция .register(), например:
import webbrowser webbrowser.register('Chrome', None, webbrowser.BackgroundBrowser('C:\Program Files (x86)\Google\Chrome\Application\chrome.exe')) webbrowser.get('Chrome').open_new_tab('vk.com')
Мы указали путь к Google Chrome, назвали его и теперь все ссылки открываются только в нём. Надеюсь немного разобрались с модулем WebBrowser и теперь перейдём к моей маленькой проблеме.
Проблема
Как говорилось ранее, для курсового проекта я выбрал создание голосового ассистента. Хотелось его научить переходить по ссылкам и искать информацию в поисковике. Конечно можно было бы «напиповать» множество библиотек для этого, но принципиально хотелось реализовать это через стандартный модуль WebBrowser.
Так как у большинства современных браузеров строка ввода ссылки и поисковая строка это одно и то же, то, казалось бы, можно просто передать запрос туда же, куда передаётся ссылка.
import webbrowser webbrowser.open_new_tab('https://vk.com') webbrowser.open_new_tab('яблоки')
По логике этого кода должны открыться две вкладки:
- Сайт vk.com
- Запрос в поисковике — яблоки
Раз нам позволяют открывать только ссылки в дефолтном браузере, так и будем открывать только ссылки.
Шаги решения

- Делаем поисковый запрос в наш поисковик (яндекс, гугл и т.д. и т.п.)
- Вытаскиваем ссылку

И, как уже многие догадались, просто вставляем нашу ссылку без того, что идёт после «text=»
import webbrowser webbrowser.open_new_tab('https://vk.com') webbrowser.open_new_tab('https://yandex.ru/search/?lr=10735&text=')
webbrowser.open_new_tab('https://yandex.ru/search/?lr=10735&text='+'еда')
webbrowser.open_new_tab('https://yandex.ru/search/?lr=10735&text=%s'%'еда')
webbrowser.open_new_tab('https://yandex.ru/search/?lr=10735&text=<>'.format('еда'))
Для начала мы понимаем, что ссылка несёт в себе домен (.ru, .com и т.д.), в запросе же, как правило, точку не ставят (купить машину, фильм онлайн и т.д.), а в ссылке пробел.
Следовательно, мы будем искать точку и пробел в том, что ввёл пользователь. Реализовать мы сможем это благодаря модулю re, который также изначально встроен в Python. Python предлагает две разные примитивные операции, основанные на регулярных выражениях: match выполняет поиск паттерна в начале строки, тогда как search выполняет поиск по всей строке. Мы воспользуемся операцией search.
import webbrowser import re call = input('Введите ссылку или запрос: ') if re.search(r'\.', call): webbrowser.open_new_tab('https://' + call) elif re.search(r'\ ', call): webbrowser.open_new_tab('https://yandex.ru/search/?text='+call) else: webbrowser.open_new_tab('https://yandex.ru/search/?text=' + call)
Немного объясню код.
Пользователь вводит ссылку или текст запроса в переменную call.
if re.search(r'\.', call): webbrowser.open_new_tab('https://' + call)
Первое условие проверяет переменную call на точку внутри неё. Символ ‘\’ обязателен, иначе модуль не понимает, что перед ним символ точка.
elif re.search(r'\ ', call):
В этом условии всё тоже самое что и в первом, но проверка ведётся уже на пробел. А пробел говорит о том, что перед нами поисковой запрос.
else: webbrowser.open_new_tab('https://yandex.ru/search/?text=' + call)
А else, в свою очередь, присваивает всё что написал пользователь без пробелов и точек в поисковый запрос.
Проверка на пробел является обязательной, иначе WebBrowser открывает Internet Explorer.
Всем спасибо за внимание! Надеюсь данная статья кому-нибудь окажется полезной.
- python
- python3
- webbrowser
- python webbrowser
- браузер
- работа с браузером
- открытие ссылок в python
- ненормальное программирование
Как открыть браузер через сервис Windows на Python?
Возникла проблема c открытием браузера средствами Python 3.x.
import webbrowser url = 'https://ru.stackoverflow.com/' browser_path = "C:/Users/Андрей/AppData/Local/Yandex/YandexBrowser/Application/browser.exe %s" webbrowser.get(browser_path).open(url)
При запуске из консоли, код работает замечательно и все открывает, однако, если попробовать запустить его как сервис Windows, браузер перестает открываться. (В диспетчере задач видно, что создается один или несколько процессов браузера в фоновом режиме). Смена браузера не помогла. Запуск в виде сервиса нужен, т.к. скрипт должен будет слушать трафик, запускаясь одновременно с системой. Вот код, который не работает:
import win32serviceutil import win32service import win32event import servicemanager import socket import webbrowser class AppServerSvc (win32serviceutil.ServiceFramework): _svc_name_ = "TestService" _svc_display_name_ = "Test Service" def __init__(self,args): win32serviceutil.ServiceFramework.__init__(self,args) self.hWaitStop = win32event.CreateEvent(None,0,0,None) socket.setdefaulttimeout(60) def SvcStop(self): self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING) win32event.SetEvent(self.hWaitStop) def SvcDoRun(self): servicemanager.LogMsg(servicemanager.EVENTLOG_INFORMATION_TYPE, servicemanager.PYS_SERVICE_STARTED, (self._svc_name_,'')) self.main() def main(self): url = 'https://ru.stackoverflow.com/' browser_path = "C://Program Files (x86)/Google/Chrome/Application/chrome.exe %s" webbrowser.get(browser_path).open(url) if __name__ == '__main__': win32serviceutil.HandleCommandLine(AppServerSvc)
Буду крайне рад, если кто-то сможет помочь! Спасибо! P.S. Настройка сервиса в окне «Вход в систему», тоже не принесла результатов, ни под системной учетной записью с доступом к рабочему столу, ни под учетной записью пользователя.
Как открыть веб-браузер в Python
В данном небольшом примере я покажу Вам как можно работать с веб-браузерами в Python, в частности как открыть браузер.
Для того, чтобы открыть веб-браузер в Python можно использовать встроенный модуль webbrowser.
Модуль webbrowser предоставляет собой высокоуровневый интерфейс, позволяющий отображать веб-страницы в различных браузерах. В большинстве случаев простой вызов функции open() из этого модуля откроет URL-адрес с помощью браузера по умолчанию. Для того, чтобы использовать модуль, вы должны сначала импортировать его. Далее пример кода:
webbrowser.open (‘https://myrusakov.ru’, new=2)
Если параметр new равен 0, URL открывается в том же окне браузера, если это возможно. Если new равен 1, открывается новое окно браузера, если это возможно. Если new равно 2, то открывается новая вкладка, если это возможно.
Теперь давайте посмотрим на другой пример. Допустим мы хотим получить от пользователя некотрую строку, которую мы затем, к примеру, отправим на форму поиска. Вот как это можно сделать:
query = input(‘Введите название темы: ‘)
webbrowser.open_new_tab(‘https://myrusakov.ru/search.html?query=%s’ % query)
В результате будет открыта новая вкладка браузера по умолчанию и отобразятся результаты поиска.

![]()
Создано 11.06.2020 13:52:03
Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!
Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.
Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления
Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.
Порекомендуйте эту статью друзьям:
Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):
- Кнопка:
Она выглядит вот так: - Текстовая ссылка:
Она выглядит вот так: Как создать свой сайт - BB-код ссылки для форумов (например, можете поставить её в подписи):
Комментарии ( 0 ):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.
Copyright © 2010-2024 Русаков Михаил Юрьевич. Все права защищены.
Python-сообщество
![]()
- Начало
- » Web
- » Открыть сайт с помощью Python
#1 Май 24, 2010 13:53:20
ganimed От: Зарегистрирован: 2010-05-24 Сообщения: 1 Репутация: 0 Профиль Отправить e-mail
Открыть сайт с помощью Python
Извеняюсь за глупый вопрос, но как организовать на питоне открытие сайта через браузер, что-то типа ссылки.
Открываем срипт, а он запускает браузер с открытой страничкой которую мы указали в скрипте.
Заранее спасибо.