Selenium парсинг — управление браузером через WebDriver для страниц с рендером или UI-действиями. Вырос из QA и до сих пор жив в корпоративных контурах. Для новых скрейперов чаще берут Playwright или Puppeteer, но Selenium логичен при готовом Grid и многоязычных биндингах.

Кратко
- Selenium = WebDriver + драйверы; биндинги Java, Python, C#, JS…
- Сильная сторона — зрелость в QA и корпоративная инфраструктура.
- Для парсинга чаще шумнее: waits, flaky селекторы.
- На greenfield обычно выигрывает Playwright по DX.
- Дорог по ресурсам относительно HTTP+парсер.

Инфографика: WebDriver-хаб → браузеры → собранные данные в таблицу/хранилище.
Типовые задачи
| Задача | Подход | Сложность | Когда не подходит |
|---|---|---|---|
| Сбор с уже существующего Grid | Remote WebDriver | Средняя | Нет Grid, есть только HTTP |
| Общий код с e2e-тестами | Page Object + extract | Средняя | Нужен чистый краулер |
| Мультиязычная команда | Java/.NET bindings | Средняя | Команда только на Node/Python + Playwright |
| Массовый HTTP-краул | — | — | Берите Scrapy |
Пример кода: Python WebDriver
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
def scrape_catalog(url: str) -> list[dict]:
options = webdriver.ChromeOptions()
options.add_argument("--headless=new")
driver = webdriver.Chrome(options=options)
try:
driver.get(url)
WebDriverWait(driver, 15).until(
EC.presence_of_all_elements_located((By.CSS_SELECTOR, ".product-card"))
)
cards = driver.find_elements(By.CSS_SELECTOR, ".product-card")
return [
{
"title": c.find_element(By.CSS_SELECTOR, "h2").text.strip(),
"price": c.find_element(By.CSS_SELECTOR, ".price").text.strip(),
}
for c in cards
]
finally:
driver.quit()
Когда Selenium ещё логичен
- Уже крутится Selenium Grid / облако драйверов.
- Тот же код обслуживает e2e и выгрузки.
- Команда сильна в Java/.NET биндингах.
- Внутренние стандарты ИБ завязаны на WebDriver.
- Миграция на Playwright отложена.
Сравнение
| Критерий | Selenium | Playwright | Scrapy |
|---|---|---|---|
| Рендер JS | Да | Да | Нет (без доработок) |
| Origin | QA | Автоматизация + e2e | Краулинг |
| Типичная боль | Waits, драйверы | Ресурсы браузера | JS-сайты |
| Масштаб HTTP | Низкий | Низкий–средний | Высокий |
Ограничения
Selenium не делает парсинг юридически безопасным. Для статичных каталогов сначала проверьте HTML/API — возможно, хватит Beautiful Soup или Scrapy.
Когда не подходит
Не стартуйте greenfield-парсер на Selenium «потому что знакомо с курсов». Node/Chromium — Puppeteer/Playwright. Без кода — no-code.
FAQ
Selenium устарел для парсинга?
Не мёртв, но для новых скрейперов чаще выбирают Playwright.
Selenium IDE подойдёт?
Для прототипа кликов — да; для продакшена нужны код, очередь и мониторинг.
Grid обязателен?
Нет. Для малого объёма хватит локального драйвера.
Кастом: парсинг сайтов, парсинг магазина. Серия: Playwright, Puppeteer.
