Основная идея Webdriver Manager — упростить установку драйверами для разных браузеров.
К основным преимуществам использования webdriver_manager в парсерах на заказ имеет несколько ключевых факторов, когда дело доходит до установки и обновления WebDriver на компьютере заказчика:
Удобство для клиента: Клиентам не нужно заботиться о технических деталях установки или обновления WebDriver. Это особенно полезно для тех, кто не имеет технических навыков.
Экономия времени: Не потребуется времени на объяснение клиентам процесса установки или обновления, что ускоряет процесс разработки и реализации.
Меньше ошибок: Автоматическое управление драйверами уменьшает вероятность ошибок из-за несоответствия версий или неправильной установки.
Поддержка нескольких браузеров: webdriver_manager поддерживает различные драйверы (Chrome, Firefox и т.д.), что делает процесс адаптации парсера к разным браузерам гораздо проще.
Обновления «на лету»: Даже если во время использования парсера выходит новая версия браузера, webdriver_manager автоматически скачает соответствующую версию драйвера.
Далее мы рассмотрим, как автоматически установить WebDriver только для Chrome.Установка WebDriver для других браузеров подробно рассмотрена в официальной документации.
Приступим, сначала установите библиотеку Selenium, если это еще не сделано:
pip install selenium
Далее, установите пакет webdriver_manager, если он еще не установлен:
pip install webdriver-manager
Теперь вы можете запустить следующий код, после чего запустится Chrome и загрузится страница курса:
# selenium 3 from selenium import webdriver from webdriver_manager.chrome import ChromeDriverManager driver = webdriver.Chrome(ChromeDriverManager().install()) # selenium 4 from selenium import webdriver from selenium.webdriver.chrome.service import Service as ChromeService from webdriver_manager.chrome import ChromeDriverManager driver = webdriver.Chrome(service=ChromeService(ChromeDriverManager().install()))
Для Selenium 4+:
ChromeDriverManager().install():
Менеджер автоматически загружает ChromeDriver, соответствующий установленному Chrome. Возвращает путь к исполняемому файлу chromedriver.exe (Windows) или chromedriver (Linux/macOS).
ChromeService(ChromeDriverManager().install()):
Создается объект Service*, который использует скачанный chromedriver.
webdriver.Chrome(service=…):
Запускается браузер Chrome с переданным Service.
Объект Service в Selenium 4+ заменяет executable_path и отвечает за управление процессом ChromeDriver. Он позволяет указать путь к драйверу, передавать аргументы и контролировать его запуск и завершение.
Для работы с Chromium
# selenium 3 from selenium import webdriver from webdriver_manager.chrome import ChromeDriverManager from webdriver_manager.core.os_manager import ChromeType driver = webdriver.Chrome(ChromeDriverManager(chrome_type=ChromeType.CHROMIUM).install()) # selenium 4 from selenium import webdriver from selenium.webdriver.chrome.service import Service as ChromiumService from webdriver_manager.chrome import ChromeDriverManager from webdriver_manager.core.os_manager import ChromeType driver = webdriver.Chrome(service=ChromiumService(ChromeDriverManager(chrome_type=ChromeType.CHROMIUM).install()))
Для работы с Firefox
# selenium 3 from selenium import webdriver from webdriver_manager.firefox import GeckoDriverManager driver = webdriver.Firefox(executable_path=GeckoDriverManager().install()) # selenium 4 from selenium import webdriver from selenium.webdriver.firefox.service import Service as FirefoxService from webdriver_manager.firefox import GeckoDriverManager driver = webdriver.Firefox(service=FirefoxService(GeckoDriverManager().install()))
Для работы с Opera
# selenium 3
from selenium import webdriver
from selenium.webdriver.chrome import service
from webdriver_manager.opera import OperaDriverManager
webdriver_service = service.Service(OperaDriverManager().install())
webdriver_service.start()
driver = webdriver.Remote(webdriver_service.service_url, webdriver.DesiredCapabilities.OPERA)
# selenium 4
from selenium import webdriver
from selenium.webdriver.chrome import service
from webdriver_manager.opera import OperaDriverManager
webdriver_service = service.Service(OperaDriverManager().install())
webdriver_service.start()
options = webdriver.ChromeOptions()
options.add_experimental_option('w3c', True)
driver = webdriver.Remote(webdriver_service.service_url, options=options)
Если браузер Opera установлен в месте, отличном от C:/Program Files или C:/Program Files (x86) в Windows и /usr/bin/opera для всех вариантов unix и mac, то используйте приведенный ниже код:
options = webdriver.ChromeOptions() options.binary_location = "path/to/opera.exe" driver = webdriver.Remote(webdriver_service.service_url, options=options)