Опции эмуляции Selenium для веб-парсинга

Этот урок посвящён опциям эмуляции Selenium, которые позволяют настроить внешний вид и поведение браузера, парся элементы <address> с классом email на странице parsertools.ru/test.

Опции эмуляции

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

--start-fullscreen

Запускает браузер в полноэкранном режиме. Полезно, когда нужно имитировать поведение пользователя на полностью развёрнутом экране. Также обеспечивает корректное отображение элементов на сайтах, которые адаптируются под размеры окна. Особенно актуально для тестирования UI и визуальных компонентов.

--kiosk

Включает режим киоска, при котором браузер работает без панели управления и вкладок. Полезно для демонстрационных стендов, публичных терминалов или автоматизированных тестов. В этом режиме пользовательский интерфейс минимален, что позволяет сосредоточиться только на контенте страницы. Также используется для эмуляции ограниченной среды работы браузера.

--force-device-scale-factor=1

Задаёт коэффициент масштабирования интерфейса браузера. Например, 1 означает стандартное масштабирование 100%. Полезно для тестирования верстки и отображения элементов на разных устройствах. Опция помогает сделать результаты автоматизации стабильными при различных разрешениях экранов.

--lang=ru-RU

Устанавливает язык интерфейса браузера. В данном случае задаёт русский язык для всех сообщений и системных элементов. Это удобно при локализации тестов и парсинга сайтов с учетом языковой версии. Также влияет на форматы дат, чисел и локализацию встроенных диалогов.

--enable-automation

Включает режим автоматизации, который позволяет управлять браузером с помощью инструментов типа Selenium. По умолчанию эта опция активна. Она открывает доступ к API для скриптов и тестов. При этом в интерфейсе появляется уведомление о том, что браузер управляется автоматизацией.

--disable-blink-features=AutomationControlled

Скрывает факт использования автоматизации от сайтов. Без этой опции многие сайты могут определять, что браузером управляет скрипт, и блокировать доступ или показывать капчи. Она отключает специальные функции Blink, которые выдают автоматизацию. Особенно полезно при парсинге и обходе детекции ботов.

Пример по этой теме с описанием можно посмотреть здесь.

Пример парсинга

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager
import time

# Настройка Selenium с опциями эмуляции
options = webdriver.ChromeOptions()
options.add_argument('--start-fullscreen')
options.add_argument('--kiosk')
options.add_argument('--force-device-scale-factor=1')
options.add_argument('--lang=ru-RU')
options.add_argument('--enable-automation')
options.add_argument('--disable-blink-features=AutomationControlled')

driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)
url = "https://parsertools.ru/test/"
try:
    driver.get(url)
    time.sleep(3)
    print("****** Находим элементы с классом email ******")
    address_tags = driver.find_elements(By.CLASS_NAME, 'email')
    if address_tags:
        for i, address in enumerate(address_tags, 1):
            print(f"Элемент {i}: {address.text.strip()}")
    else:
        print("Класс 'email' не найден")
finally:
    driver.quit()

Как работает код

  • Опции эмуляции: Настраивают интерфейс и поведение браузера.
  • Парсинг: Извлекает текст из <address> с классом email.

Тестирование

Пример структуры страницы:

Результат:

  • Элемент 1: Автор: admin@parsertools.ru

Оптимизация

  • Явное ожидание: Используйте WebDriverWait.
  • Масштабирование: Подходит для тестирования на разных разрешениях.

Этические аспекты

Проверяйте robots.txt, избегайте перегрузки сервера, соблюдайте правила использования данных.

Ограничения

  • Совместимость: Некоторые опции зависят от окружения.

Заключение

Опции эмуляции Selenium делают браузер похожим на пользовательский. Экспериментируйте на parsertools.ru/test.

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