Настройка профиля в 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.
