Настройка предпочтений и DevTools в Selenium для веб-парсинга
Этот урок посвящён настройке предпочтений и DevTools в Selenium для управления поведением браузера при веб-парсинге элементов <address> с классом email на странице parsertools.ru/test.
Предпочтения и DevTools
Эти параметры позволяют настраивать поведение браузера через внутренние предпочтения и DevTools, делая автоматизацию более стабильной и «чистой»:
prefs
Позволяет задавать пользовательские предпочтения браузера, например отключение загрузки изображений, уведомлений и автосохранения паролей.
Это помогает ускорить работу при парсинге и тестировании, так как лишние элементы не мешают скриптам.
Также делает поведение браузера более предсказуемым и стабильным.
Используется вместе с опцией add_experimental_option("prefs", prefs).
Можно настраивать практически любые параметры профиля через объект prefs.
excludeSwitches
Позволяет исключить некоторые флаги запуска браузера, например уведомление о том, что Chrome управляется автоматизацией.
Это делает интерфейс «чистым» и помогает избежать распознавания бота на сайтах.
Можно исключать несколько переключателей одновременно.
Особенно полезно при создании стабильных скриптов парсинга и тестирования.
Настраивается через метод add_experimental_option("excludeSwitches", [...]).
useAutomationExtension
Отключает встроенное расширение автоматизации, которое Chrome подключает при работе с Selenium.
Без этой опции сайты могут определить, что браузером управляют скрипты.
Отключение расширения повышает «незаметность» автоматизации.
Используется вместе с excludeSwitches для полного скрытия факта автоматизации.
Особенно актуально при парсинге и обходе антибот-защит.
Пример по этой теме с описанием можно посмотреть здесь.
Пример парсинга
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 с предпочтениями и DevTools
options = webdriver.ChromeOptions()
prefs = {
"profile.default_content_settings.images": 2,
"profile.managed_default_content_settings.images": 2,
"profile.default_content_setting_values.notifications": 2,
"credentials_enable_service": False,
"profile.password_manager_enabled": False
}
options.add_experimental_option("prefs", prefs)
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)
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()
Как работает код
- Prefs/DevTools: Отключают ненужные функции и уведомления об автоматизации.
- Парсинг: Извлекает текст из
<address>с классомemail.
Тестирование
Пример структуры страницы:
Результат:
Элемент 1: Автор: admin@parsertools.ru
Оптимизация
- Явное ожидание: Используйте
WebDriverWait.
Этические аспекты
Проверяйте robots.txt, избегайте перегрузки сервера, соблюдайте правила использования данных.
Ограничения
- Совместимость: Некоторые настройки зависят от версии Chrome.
Заключение
Настройка предпочтений и DevTools в Selenium оптимизирует веб-парсинг. Экспериментируйте на parsertools.ru/test.
Больше уроков по парсингу на parsertools.ru/lessons.
