- Как открыть URL-адрес в Python
- Открытие URL в Python
- Метод 1. Использование функции библиотеки urllib
- Метод 2. Использование функции библиотеки веб-браузера
- Метод 3. Использование функции библиотеки Selenium
- Установка библиотеки
- Установка веб-драйверов
- Как открыть ссылку в Python. Работа с WebBrowser и решение проблемы с Internet Explorer
- Проблема
- Шаги решения
- Всем спасибо за внимание! Надеюсь данная статья кому-нибудь окажется полезной.
Как открыть URL-адрес в Python
Python – это очень сильный и продвинутый язык программирования, и мы можем выполнять различные задачи и функции с помощью Python. Одна из таких задач, которую мы можем легко решить, – это открытие URL-адреса с помощью программы Python. В этом руководстве мы собираемся обсудить методы или способы, которые мы можем использовать для открытия URL-адреса в Python.
Открытие URL в Python
Мы можем использовать программу Python, чтобы открыть URL-адрес с помощью скрипта Python, и для этого мы можем использовать набор других библиотек. У нас есть разные методы, в которых мы будем использовать разные библиотеки и их функции для открытия URL-адреса, указанного в программе.
В этом разделе мы собираемся использовать следующие методы, чтобы открыть заданный URL-адрес с помощью программы Python:
- Использование функции библиотеки Urllib.
- Использование функции библиотеки веб-браузера.
- Использование функции библиотеки Selenium.
Первые две библиотеки обычно предустановлены с последними версиями Python. Мы собираемся обсудить все три метода и будем использовать программу Python для каждого, чтобы лучше понять их реализацию.
Метод 1. Использование функции библиотеки urllib
Urllib – это встроенный модуль Python, который мы можем использовать для работы с URL-адресами и открытия URL-адресов с помощью программы Python. В модуле urllib определены различные классы и функции, которые помогают нам выполнять различные действия с URL-адресами с помощью программы Python.
Мы будем использовать метод urlopen(), импортировав библиотеку urllib.request в программу, а затем дадим URL-адрес внутри этой функции, чтобы она открывалась в браузере нашего устройства. Чтобы лучше понять реализацию этого метода urlopen(), мы будем использовать его в примере программы Python и открывать ссылку через него.
Пример 1. Посмотрите на программу Python, в которой мы используем функцию urlopen():
# Importing urllib request module in the program import urllib.request # Using urlopen() function with url in it webUrl = urllib.request.urlopen('https://www.javatpoint.com/python-tutorial')
Объяснение: мы открыли URL-адрес «Учебника Python в JavaTpoint» в нашем браузере, указав URL-адрес внутри функции urlopen() в программе.
Метод 2. Использование функции библиотеки веб-браузера
Теперь мы будем использовать библиотеку веб-браузера, которая представляет собой библиотеку на Python для работы с веб-контентом. Среда создается для пользователя с помощью модуля веб-браузера, который позволяет пользователю отображать различное веб-содержимое в самом приложении Python.
Прежде чем мы начнем работать с библиотекой веб-браузера, мы должны убедиться, что она правильно установлена в нашей системе, в которой мы запускаем Python. И, если библиотека веб-браузера отсутствует в системе, мы можем установить ее, используя следующую команду в командной строке нашего устройства:
Теперь мы начнем работать с библиотекой веб-браузера и откроем URL-адрес с помощью библиотеки веб-браузера; мы будем использовать ее функцию open() в программе. Чтобы лучше понять реализацию этого метода библиотеки веб-браузера для открытия URL-адреса в Python, мы будем использовать его в примере программы Python и открывать ссылку через него.
Пример 2. Посмотрите на следующую программу Python:
# Import webbrowser module in the program import webbrowser # Add a URL of JavaTpoint to open it in a browser url= 'https://www.javatpoint.com/python-tutorial' # Open the URL using open() function of module webbrowser.open_new_tab(url)
Объяснение: Мы открыли URL-адрес в браузере Chrome в нашей системе, используя функцию open_new_tab() модуля веб-браузера и указав в нем URL-ссылку.
Метод 3. Использование функции библиотеки Selenium
Библиотека Selenium – это мощный инструмент, предоставляемый Python, и мы можем использовать его для управления URL-ссылками и веб-браузером нашей системы с помощью программы Python. Мы также можем открывать URL-ссылки в нашей программе Python, используя функции библиотеки Selenium.
Связывание функций библиотеки в Python предоставляет нам очень удобные API для доступа к WebDrivers модулей Selenium, таких как Chrome, Firefox, Microsoft Edge и т. д.
Установка библиотеки
Прежде чем мы начнем работать с библиотекой Selenium, мы должны убедиться, что она правильно установлена в нашей системе, в которой мы запускаем Python. Чтобы установить библиотеку selenium, мы должны использовать следующую команду с установщиком pip в терминале командной строки:
Как видно выше, мы успешно установили библиотеку в нашу систему. В настоящее время версиями Python, поддерживающими библиотеку Selenium, являются Python 2.7, Python 3.5 и все более поздние версии.
Установка веб-драйверов
Чтобы использовать функции библиотеки selenium с URL-адресами, мы также должны установить веб-драйверы, предоставляемые selenium для соответствующего браузера.
WebDriver – это пакет, предоставляемый selenium для взаимодействия с веб-браузером, присутствующим в нашей системе. WebDrivers взаимодействует с удаленным веб-сервером или веб-браузером системы, используя проводной протокол, общий для всех веб-браузеров.
Здесь мы предоставляем ссылки для загрузки веб-драйверов некоторых известных браузеров и используем эти ссылки; вы можете загрузить драйверы для веб-браузера, присутствующего в системе.
https://webkit.org/blog/6900/webdriver-support-in-safari-10/
https://github.com/mozilla/geckodriver/releases
https://sites.google.com/a/chromium.org/chromedriver/downloads
Теперь мы начнем работать с библиотекой Selenium и открытым URL-адресом, используя функции библиотеки в программе. Чтобы лучше понять реализацию этого метода использования библиотеки Selenium для открытия URL-адреса в Python, мы будем использовать его в примере программы Python и открывать ссылку через него.
Пример 3. Посмотрите на следующую программу Python:
# Import webdriver from selenium library from selenium import webdriver # Importing keys in the program from webdriver from selenium.webdriver.common.keys import Keys # Providing the path of chrome Web driver driver = webdriver.Chrome('C:/Users/Manish/Downloads/chromedriver_win32/chromedriver.exe') # Opening url by get() method driver.get("https://www.javatpoint.com/python-tutorial")
Объяснение: После импорта веб-драйверов из библиотеки Selenium мы импортировали ключи из веб-драйверов в программе. Мы предоставили путь для загруженного Chrome webdriver, используя указанные выше ссылки. Затем с помощью функции get() с драйвером мы открыли URL-адрес в браузере, указав ссылку в методе get().
Используя любой из трех методов, упомянутых в этом руководстве, мы можем легко открыть URL-адрес в веб-браузере нашей системы с помощью программы Python.
Как открыть ссылку в Python. Работа с WebBrowser и решение проблемы с Internet Explorer
В ходе работы над курсачом для универа столкнулся со стандартным модулем Python — WebBrowser. Через этот модуль я хотел реализовать работу голосового помощника — Lora с дефолтным браузером, но всё пошло не так гладко как ожидалось. Давайте для начала расскажу вам что это за модуль и как он вообще работает.
WebBrowser — это вшитый в Python модуль, который предоставляет собой высокоуровневый интерфейс, позволяющий просматривать веб-документы.
Для начала работы импортируйте модуль командой:
Теперь возникает выбор как открыть ссылку. Есть два стула:
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 и писать по-человечески:
Данная конструкция открывает URL-адрес в новом ОКНЕ браузера по умолчанию, если это возможно, в противном случае откроет URL-адрес в единственном окне браузера.
webbrowser.open_new_tab(url)
В этом случае URL-адрес откроется на новой странице (”tab») браузера по умолчанию, если это возможно, в противном случае эквивалентно open_new ().
Предположим, что вам не нужен браузер по умолчанию. Для выбора браузера существует классная команда .get()
Грубо говоря, вы просто указываете какой браузер вам использовать.
Например, открытие новой вкладки в 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('яблоки')
По логике этого кода должны открыться две вкладки:
Раз нам позволяют открывать только ссылки в дефолтном браузере, так и будем открывать только ссылки.
Шаги решения
- Делаем поисковый запрос в наш поисковик (яндекс, гугл и т.д. и т.п.)
- Вытаскиваем ссылку
И, как уже многие догадались, просто вставляем нашу ссылку без того, что идёт после «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 на точку внутри неё. Символ ‘\’ обязателен, иначе модуль не понимает, что перед ним символ точка.
В этом условии всё тоже самое что и в первом, но проверка ведётся уже на пробел. А пробел говорит о том, что перед нами поисковой запрос.
else: webbrowser.open_new_tab('https://yandex.ru/search/?text=' + call)
А else, в свою очередь, присваивает всё что написал пользователь без пробелов и точек в поисковый запрос.
Проверка на пробел является обязательной, иначе WebBrowser открывает Internet Explorer.