Урок 23. Настройка браузера — headless режимы и оптимизация скорости в Selenium

Headless-браузер — это браузер без графического интерфейса, который работает в фоновом режиме. Использование headless-режима значительно ускоряет выполнение скриптов, экономит ресурсы компьютера и подходит для автоматизации тестирования и парсинга.

Зачем нужен headless-режим

  • Ускорение работы: браузер не рендерит визуальный интерфейс.
  • Меньше ресурсов: экономия памяти и процессора.
  • Автоматизация на сервере: удобно запускать на VPS или CI/CD без GUI.
  • Парсинг и тестирование: можно запускать массовые сценарии без визуального контроля.

Как включить headless-режим в Selenium

Для Chrome и Firefox достаточно добавить опцию --headless при настройке WebDriver:

from selenium import webdriver
import time
# Настройка headless Chrome
options = webdriver.ChromeOptions()
# options.add_argument("--headless")  # включение headless режима
options.add_argument("--disable-gpu")  # отключение GPU
options.add_argument("--window-size=1000,800")  # установка размера окна

driver = webdriver.Chrome(options=options)
driver.get("https://parsertools.ru")
time.sleep(10)
print(driver.title)
driver.quit()

Оптимизация скорости работы скриптов

Даже в headless-режиме можно ускорить Selenium с помощью нескольких подходов:

  • Отключение изображений и CSS: браузер загружает только HTML и JavaScript.
  • Ограничение таймаутов: уменьшение ожидания элементов с WebDriverWait.
  • Использование мобильных профилей: упрощенные версии страниц грузятся быстрее.
  • Минимизация логирования: отключение лишних сообщений и расширений.
  • Пакетная обработка: выполнение действий в циклах с заранее загруженными страницами.
# options.add_argument(«—headless») и time.sleep(10) — здесь использованы только для того что бы видеть работу примера.

Пример ускоренной загрузки страниц

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By

options = Options()
options.add_argument("--headless")
options.add_argument("--disable-gpu")
options.add_argument("--blink-settings=imagesEnabled=false")  # отключаем загрузку картинок
options.add_argument("--window-size=1920,1080")

driver = webdriver.Chrome(options=options)
driver.get("https://news.google.com/home?hl=ru&gl=RU&ceid=RU:ru")

# Находим все заголовки h1, h2, h3
headers = driver.find_elements(By.CSS_SELECTOR, "h1, h2, h3")
for header in headers:
    print(header.text)

driver.quit()

Использование headless-режима и оптимизация скорости позволяют запускать большие сценарии парсинга и автоматизации с минимальными затратами ресурсов, что особенно важно для серверных решений и CI/CD.

Этот код на Selenium:

  • открывает страницу сайта
  • ищет все заголовки h1, h2 и h3
  • собирает их в список
  • выводит текст каждого заголовка
  • Пример вывода:
    Сводка новостей
    Главные новости
    Местные новости

    Советы по настройке браузера и headless режиму

    • Используйте headless режим, чтобы запускать браузер без графического интерфейса и ускорять тесты.
    • Настраивайте ChromeOptions или FirefoxOptions для отключения изображений, расширений и уведомлений.
    • Применяйте неявные и явные ожидания, чтобы снизить количество пауз и ускорить скрипт.
    • Для массового парсинга или тестирования на сервере рекомендуется использовать виртуальные дисплеи или контейнеры Docker.

    Эти рекомендации помогают ускорить работу Selenium, экономить ресурсы компьютера и делать автоматизацию тестов и парсинг сайтов более эффективным.

    Больше уроков по парсингу на parsertools.ru/lessons.