Урок 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.
- Использование мобильных профилей: упрощенные версии страниц грузятся быстрее.
- Минимизация логирования: отключение лишних сообщений и расширений.
- Пакетная обработка: выполнение действий в циклах с заранее загруженными страницами.
Пример ускоренной загрузки страниц
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:
Пример вывода:
Сводка новостей
Главные новости
Местные новости
Советы по настройке браузера и headless режиму
- Используйте headless режим, чтобы запускать браузер без графического интерфейса и ускорять тесты.
- Настраивайте ChromeOptions или FirefoxOptions для отключения изображений, расширений и уведомлений.
- Применяйте неявные и явные ожидания, чтобы снизить количество пауз и ускорить скрипт.
- Для массового парсинга или тестирования на сервере рекомендуется использовать виртуальные дисплеи или контейнеры Docker.
Эти рекомендации помогают ускорить работу Selenium, экономить ресурсы компьютера и делать автоматизацию тестов и парсинг сайтов более эффективным.
Больше уроков по парсингу на parsertools.ru/lessons.
