2026 SALE -50%10ч:43м:16с
Вход

Как использовать Selenium и Python для веб-скрапинга

Последнее обновление: 23 июня 2026 г.

Сбор данных с веб-сайтов, известный как веб-скрапинг, — практичная техника для многих проектов. Библиотеки вроде BeautifulSoup отлично подходят для работы с базовым HTML, однако они часто не справляются, когда страницы сильно зависят от JavaScript для отображения контента. Именно здесь на помощь приходит Selenium.

В этом руководстве вы узнаете, как эффективно использовать Selenium с Python для сбора данных с веб-сайтов.

С чего начать — что такое Selenium?

Selenium — это фреймворк автоматизации браузера, предназначенный для тестирования веб-приложений. Он имитирует поведение реального пользователя, управляя настоящим браузером, таким как Chrome или Firefox. Благодаря этому он может обрабатывать контент, отрендеренный JavaScript, с которым другие инструменты не справляются.

Это делает Selenium отличным решением для сбора контента с интерактивных сайтов, форм, бесконечной прокрутки и многого другого.

Как установить Selenium

Для начала установите Selenium с помощью pip:

pip install selenium

Как настроить WebDriver

Selenium требует WebDriver для связи с браузером. Вот простой пример с Chrome:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service

service = Service("/path/to/chromedriver")
driver = webdriver.Chrome(service=service)

Если вы хотите запускать браузер без открытия окна (удобно на серверах), включите headless-режим:

from selenium.webdriver.chrome.options import Options

options = Options()
options.add_argument("--headless=new")
driver = webdriver.Chrome(options=options)

Как находить элементы на странице

Вы можете использовать разные стратегии для поиска HTML-элементов:

from selenium.webdriver.common.by import By

element = driver.find_element(By.CLASS_NAME, "product-title")

Другие варианты локаторов:

  • By.ID
  • By.TAG_NAME
  • By.CSS_SELECTOR
  • By.XPATH

Ожидание загрузки JavaScript

Вместо time.sleep(), Selenium поддерживает умное ожидание с помощью WebDriverWait:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, "content"))
)

Выполнение JavaScript

Если нужно прокрутить страницу или активировать плохо загружаемые элементы, можно выполнить JavaScript:

driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")

Как делать скриншоты

Сделайте скриншот текущего вида с помощью:

driver.save_screenshot("screenshot.png")

Обработка пагинации

Чтобы собрать данные с нескольких страниц, можно перебирать ссылки или нажимать кнопку «Далее»:

next_button = driver.find_element(By.LINK_TEXT, "Next")
next_button.click()

Экспорт данных

Вы можете использовать библиотеку Pandas для сохранения собранных данных в CSV-файл:

import pandas as pd

df = pd.DataFrame(data)
df.to_csv("output.csv", index=False)

Прокрутка с помощью клавиш

Чтобы имитировать нажатие клавиш вроде PAGE_DOWN или END:

from selenium.webdriver.common.keys import Keys

body = driver.find_element(By.TAG_NAME, "body")
body.send_keys(Keys.END)

Блокировка изображений и других ресурсов

Чтобы ускорить скрапинг и снизить потребление ресурсов:

driver.execute_cdp_cmd("Network.setBlockedURLs", {"urls": ["*.jpg", "*.png"]})

Как Selenium сравнивается с другими инструментами?

ИнструментПоддержка JavaScriptСкоростьИдеальный сценарий
SeleniumПолнаяУмереннаяИнтерактивные/динамические страницы
BeautifulSoupНетБыстраяСкрапинг статического HTML
ScrapyОпционально (через Selenium)Очень быстраяКрупномасштабные проекты скрапинга
PuppeteerПолная (только Node.js)УмереннаяHeadless-скрапинг на базе Chromium

Когда стоит использовать Selenium?

Выбирайте Selenium, когда:

  • Сайт в основном зависит от JavaScript
  • Нужно имитировать действия пользователя (клики, прокрутку и ввод)
  • Вы работаете над небольшой или средней задачей по скрапингу

Для более крупных или быстрых задач по скрапингу рассмотрите инструменты вроде Scrapy или специализированные API, которые берут на себя резидентские прокси, CAPTCHA и JavaScript.

Заключение

Selenium — отличный вариант для скрапинга динамических сайтов с помощью Python. После настройки он позволяет извлекать контент со сложных страниц. Хотя это не самый быстрый инструмент, его способность автоматизировать настоящий браузер делает его невероятно гибким.

Содержание статьи

Готовы попробовать сами?

Начните работу с нашим продуктом всего за пару кликов.