Далее будет подробно рассмотрено, как запустить браузер в скрытом режиме с использованием Selenium. Этот метод особенно полезен, когда у вас есть задачи автоматизации, которые не требуют взаимодействия с пользовательским интерфейсом вручную, такие как веб-скрапинг или автоматизированное тестирование и др.
Особенности запуска
Запуск браузера в фоновом режиме очень прост: достаточно запомнить всего один параметр и синтаксис. Для этого нам потребуется передать параметр —headless в метод .add_argument(). В качестве примера откроем страницу курса и получим первую найденную ссылку.
from selenium import webdriver from selenium.webdriver.common.by import By # Создание объекта ChromeOptions для дополнительных настроек браузера options_chrome = webdriver.ChromeOptions() # Добавление аргумента '--headless' для запуска браузера в фоновом режиме options_chrome.add_argument('--headless') # Инициализация драйвера Chrome с указанными опциями # Использование менеджера контекста 'with' для автоматического закрытия браузера после выполнения кода with webdriver.Chrome(options=options_chrome) as browser: url = 'https://mob25.com/' browser.get(url) # Ищем элемент по тегу 'a' (ссылку) a = browser.find_element(By.TAG_NAME, 'a') # Выводим атрибут 'href' найденного элемента (URL ссылки) print(a.get_attribute('href'))
Настройка опций браузера: Cоздается объект options_chrome, в который добавляется аргумент —headless для запуска браузера в фоновом режиме.
# Создание объекта ChromeOptions для дополнительных настроек браузера options_chrome = webdriver.ChromeOptions() # Добавление аргумента '--headless' для запуска браузера в фоновом режиме options_chrome.add_argument('--headless')
Инициализация драйвера: После этого инициализируется драйвер Chrome с указанными опциями. Здесь используется менеджер контекста with, чтобы автоматически закрыть браузер после выполнения операций.
with webdriver.Chrome(options=options_chrome) as browser:
Открытие веб-страницы: Следующим шагом является открытие заданной веб-страницы по URL-адресу https://mob25.com/
url = 'https://mob25.com/' browser.get(url)
Поиск элемента: Затем выполняется поиск первого элемента с тегом a на открытой странице.
# Ищем элемент по тегу 'a' (ссылку) a = browser.find_element(By.TAG_NAME, 'a')
Вывод информации: Наконец, из найденного элемента извлекается атрибут href, который представляет собой URL-адрес ссылки, и этот адрес выводится на экран.
Преимущества запуска браузера в фоновом режиме
Отсутствует отрисовка содержимого: Поскольку браузер не отображает веб-страницы, потребление ресурсов (CPU и RAM) снижается.
Быстродействие: Нет необходимости в отрисовке элементов на странице, что ускоряет работу. Это особенно заметно на слабых машинах.
Экономия экранного пространства: Запущенный в фоновом режиме браузер не занимает место на экране и не мешает вашей текущей работе.
Повышенная стабильность: В фоновом режиме меньше вероятность сбоев из-за отсутствия взаимодействия с пользовательским интерфейсом.
Удобство автоматизации: Процесс становится более управляемым для автоматических скриптов и тестов, т.к. не требует открывания и закрывания окон.
Скрытность: В фоновом режиме более трудно для окружающих заметить, что именно вы делаете, что может быть полезно для сбора данных или тестирования.
Экономия времени: Вам не нужно ждать, пока страницы загрузятся и элементы отобразятся, что делает процесс более эффективным по времени.
Легкость интеграции: В фоновом режиме удобнее интегрировать веб-парсинг или автоматизацию браузера в большие системы или конвейеры обработки данных.
Уменьшение вероятности капчи: Некоторые сайты менее строго реагируют на запросы из браузера, запущенного в фоновом режиме, по сравнению с браузером, активно используемым пользователем.
В некоторых гайдах вы можете встретить параметр —disable-gpu, давайте подробнее рассмотрим каждый из них.
—headless
Как вы правильно заметили, параметр —headless запускает браузер в режиме без графического интерфейса. Это означает, что браузер будет работать в фоновом режиме и не будет отображать открываемые веб-страницы. Это удобно для автоматизации задач и веб-скрапинга, особенно на серверах без графической оболочки.
—disable-gpu
Параметр —disable-gpu отключает использование графического процессора (GPU) при отрисовке. Этот параметр часто использовался для обхода некоторых проблем с драйверами видеокарт в прошлых версиях браузеров и операционных систем. Сейчас его актуальность несколько уменьшилась, но он всё равно может быть полезным на системах, где GPU вызывает проблемы или не поддерживается.
Часто эти два параметра используются вместе в следующем виде:
options = webdriver.ChromeOptions() options.add_argument('--headless') options.add_argument('--disable-gpu')
Это делается из соображений совместимости и стабильности. Например, на некоторых системах, запуск в режиме —headless без отключения GPU может привести к нежелательным сайд-эффектам или ошибкам.
Вывод
Хотя —headless и —disable-gpu могут казаться похожими на первый взгляд, они служат разным целям:
—headless убирает графический интерфейс для ускорения загрузки страниц и снижения потребления ресурсов.
—disable-gpu просто отключает использование графического процессора для рендеринга, что может быть полезным на машинах с проблемными или отсутствующими графическими драйверами.