Как открыть браузер через сервис 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. Настройка сервиса в окне «Вход в систему», тоже не принесла результатов, ни под системной учетной записью с доступом к рабочему столу, ни под учетной записью пользователя.
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’) |
- «Konqueror» — это файловый менеджер для среды рабочего стола KDE для Unix, и его имеет смысл использовать только в том случае, если работает KDE. Неплохо было бы найти какой-нибудь способ надежного обнаружения KDE; переменной KDEDIR недостаточно. Также обратите внимание, что имя «kfm» используется даже при использовании команды konqueror с KDE 2. Реализация выбирает наилучшую стратегию для запуска Konqueror.
- Только на платформах Windows.
- Только на платформе 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 . |
Как открыть веб-браузер в 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-2023 Русаков Михаил Юрьевич. Все права защищены.
Python-сообщество
![]()
- Начало
- » Web
- » Открыть сайт с помощью Python
#1 Май 24, 2010 13:53:20
ganimed От: Зарегистрирован: 2010-05-24 Сообщения: 1 Репутация: 0 Профиль Отправить e-mail
Открыть сайт с помощью Python
Извеняюсь за глупый вопрос, но как организовать на питоне открытие сайта через браузер, что-то типа ссылки.
Открываем срипт, а он запускает браузер с открытой страничкой которую мы указали в скрипте.
Заранее спасибо.