Настройка профиля в Selenium для веб-парсинга

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

Опции профиля

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

--profile-directory

Позволяет указать конкретную директорию профиля Chrome для использования. Это удобно, если нужно запускать несколько браузеров с разными настройками одновременно. Профили содержат куки, историю, закладки и расширения, что позволяет сохранять состояние между сессиями. Без этой опции браузер использует стандартный профиль по умолчанию. Особенно полезно для тестирования и автоматизации с несколькими пользователями.

--user-data-dir

Указывает путь к папке с пользовательским профилем. С помощью этой опции можно полностью изолировать сессии браузера от стандартного профиля. Это полезно для CI/CD, автоматизации и параллельных тестов, чтобы данные не пересекались. Кроме того, можно заранее подготовить профиль с нужными настройками и расширениями. Без указания этой опции используется стандартная директория Chrome по умолчанию.

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

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

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('--profile-directory=Default')
options.add_argument('--user-data-dir=/path/to/profile')

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.