Веб-скрапинг с помощью SeleniumBase и Python в 2026 году
В этой статье я пошагово разберу SeleniumBase Мы рассмотрим ключевые возможности SeleniumBase, покажем, как использовать его для скрапинга, и поделимся практическими советами, как справляться с трудностями современного веба. Если вы только начинаете заниматься скрапингом или хотите выйти на новый уровень, SeleniumBase предлагает простой способ начать.
Что такое SeleniumBase?
SeleniumBase — это Python-фреймворк с открытым исходным кодом, построенный поверх Selenium и предназначенный для упрощения задач веб-автоматизации, включая тестирование и скрейпинг. В отличие от стандартного Selenium, который часто требует большого объема шаблонного кода, SeleniumBase сокращает количество повторяющегося кода благодаря встроенным инструментам для извлечения данных, автоматизации взаимодействий и обхода антибот-защиты.
Альтернативный вариант — инструменты автоматизированного веб-скрапинга
Если вам нужно собирать данные в больших масштабах или работать со сложными сайтами с продвинутой антибот-защитой, я могу посоветовать попробовать один из следующих инструментов для веб-скрейпинга, с которыми работает мое агентство:
- Яркие данные — Best overall for advanced scraping; features extensive proxy management and reliable APIs.
- Octoparse - удобный no-code-инструмент для автоматического извлечения данных с сайтов.
- ScrapingBee — API для разработчиков, эффективно работающее с прокси, браузерами и CAPTCHA.
- Scrapy — Python-фреймворк с открытым исходным кодом, отлично подходящий для обхода антибот-защиты и веб-скрейпинга.
- ScraperAPI — Handles tough scrapes with advanced anti-bot technologies; great for developers.
- Apify — Универсальная платформа, предлагающая готовые скрейперы и мощные возможности скрейпинга.
Чтобы узнать больше о каждом сервисе, рекомендую прочитать моя полная статья об инструментах для веб-скрапинга.
Теперь давайте начнем с установки SeleniumBase.
Настройка SeleniumBase
Прежде чем погружаться в веб-скрапинг, нужно установить и настроить SeleniumBase в вашей системе. Вот как это сделать:
Install Python: Убедитесь, что у вас установлен Python. Если нет, скачайте его с официального Python website.
Install SeleniumBase: Используйте следующую команду, чтобы установить SeleniumBase через pip:
pip3 install seleniumbase
Install WebDriver: SeleniumBase берет на себя установку WebDriver, но при желании вы также можете вручную скачать его и добавить в PATH.
Проверьте установку: Чтобы проверить, что SeleniumBase установлен правильно, выполните следующую команду и посмотрите доступные параметры:
seleniumbase - help
Теперь, когда SeleniumBase установлен, давайте создадим базовый скрейпер.
Создание простого скрапера с SeleniumBase
Создание простого веб-скрейпера на SeleniumBase требует настройки Python-скрипта для работы с веб-страницей. В этом примере мы будем собирать данные о товарах с демо-сайта интернет-магазина.
Вот пошаговое руководство по созданию базового скрейпера:
Create a new file called scraper.py в каталоге вашего проекта.
Напишите следующий код чтобы извлечь полный HTML-контент целевой страницы:
с сайта seleniumbase импорт BaseCase
класс Scraper(BaseCase):
def test_get_html(себя): self.открыть("https://www.scrapingcourse.com/ecommerce/")
page_html = self.get_page_source()
печать(page_html)
Запустите скрейпер с помощью команды pytest:
pytest scraper.py -s
Приведённый выше код открывает страницу интернет-магазина и извлекает HTML-код, который затем выводится в терминал. Это служит основой для более сложных задач скрапинга.
Extracting Specific Data
Чтобы сделать скрейпер полезнее, часто нужно нацеливаться на конкретные элементы, например названия товаров, изображения и URL. SeleniumBase поддерживает CSS-селекторы, XPath и ID для поиска элементов. Вот как извлекать разные типы данных:
Scraping Product Names
Определите HTML-структуру названия товара, которое в этом примере находится внутри тега h2 с классом product-name. Код ниже показывает, как извлекать названия товаров:
с сайта seleniumbase импорт BaseCase
класс Scraper(BaseCase):
def test_get_product_names(себя): self.открыть("https://www.scrapingcourse.com/ecommerce/")
product_names = self.find_elements("h2.product-name")
names = [product.text для продукт в product_names]
печать(имена)
Scraping Product Images
Чтобы извлечь URL изображений, найдите теги img с классом product-image. Следующий код извлекает URL изображений:
с сайта seleniumbase импорт BaseCase
класс Scraper(BaseCase):
def test_get_image_urls(себя): self.открыть("https://www.scrapingcourse.com/ecommerce/")
image_elements = self.find_elements("img.product-image")
image_urls = [image.get_attribute("src") для image в image_elements]
печать(image_urls)
Scraping Product Links
Аналогично извлеките URL товаров из тегов a с классом woocommerce-LoopProduct-link:
с сайта seleniumbase импорт BaseCase
класс Scraper(BaseCase):
def test_get_product_links(себя): self.открыть("https://www.scrapingcourse.com/ecommerce/")
link_elements = self.find_elements("a.woocommerce-LoopProduct-link")
links = [link.get_attribute("href") для link в link_elements]
печать(ссылки)
Automating Browser Interactions
В некоторых случаях одного сбора статического контента недостаточно, особенно если сайты подгружают контент динамически или требуют взаимодействия пользователя. SeleniumBase поддерживает широкий набор действий в браузере, включая клики, прокрутку и отправку форм.
Пример: автоматизация отправки формы
Предположим, сайту нужны учетные данные для входа. Вот скрипт для авторизации и извлечения контента:
с сайта seleniumbase импорт BaseCase
класс Scraper(BaseCase):
def test_login_and_scrape(себя): self.открыть("https://www.scrapingcourse.com/login") self.type("#email", "[email protected]") self.type("#password", "password")
self.click("button[type='submit']")
self.save_screenshot("after_login.png")
This script fills in login details, submits the form, and captures a screenshot after logging in. The save_screenshot function helps confirm that the scraper navigates the site correctly.
Avoiding Anti-Bot Measures
Сайты часто используют разные антибот-меры, такие как CAPTCHA, блокировка IP-адресов или JavaScript-проверки. SeleniumBase включает функции, которые помогают обходить часть этих мер, но у него есть ограничения.
Using UC Mode
Режим UC (Undetected ChromeDriver) в SeleniumBase позволяет скрейперам имитировать поведение реальных пользователей, изменяя браузерные отпечатки. Вот как его включить:
с сайта seleniumbase импорт Driver
класс Scraper(BaseCase):
def test_bypass_bot_protection(себя):
driver = Driver(uc=Правда) driver.открыть("https://www.scrapingcourse.com/antibot-challenge")
driver.uc_gui_click_captcha()
page_html = driver.get_page_source()
печать(page_html)
driver.quit()
Этот скрипт использует режим UC для обхода обнаружения ботов и прохождения CAPTCHA-проверок. Учтите, что хотя режим UC может помочь избежать обнаружения, он не дает полной гарантии, особенно против очень сложных антибот-систем.
Proxy Configuration
Использование прокси может помочь избежать блокировок по IP за счет ротации IP-адресов. SeleniumBase позволяет настраивать прокси для повышения анонимности:
pytest scraper.py - proxy=IP:PORT - proxy-type=http
Эта команда настраивает прокси-сервер, который SeleniumBase использует для всех запросов в рамках сессии скрапинга.
Продвинутые техники и лучшие практики
Чтобы сделать веб-скрейпер более надежным и снизить вероятность блокировки, следуйте этим рекомендациям:
- Use Random Delays: Вставляйте случайные паузы между действиями, чтобы имитировать поведение обычного пользователя при просмотре сайтов.
- Rotate User Agents: Измените строку user-agent, чтобы имитировать разные устройства и браузеры.
- Handle JavaScript Rendering: Use self.wait_for_element to ensure all dynamic content loads before scraping.
- Respect the Robots.txt File: Always check a website’s robots.txt file to understand what sections are allowed for scraping.
Ограничения SeleniumBase
Хотя SeleniumBase и мощный инструмент, у него есть и недостатки:
- Обнаружение в headless-режиме: Некоторые сайты могут обнаруживать headless-браузеры.
- Scale Limitations: Он не подходит для сбора больших объёмов данных на множестве страниц из-за ограничений по скорости.
- Anti-bot Adaptation: Поскольку это инструмент с открытым исходным кодом, разработчики антибот-систем могут обновлять свои алгоритмы, чтобы обнаруживать SeleniumBase.
Заключение
Веб-скрейпинг с SeleniumBase — это гибкий и мощный способ собирать данные, автоматизировать задачи и взаимодействовать с сайтами. Мне особенно нравится этот инструмент, потому что он прост в использовании и предлагает мощные возможности автоматизации, что делает его отличным вариантом как для начинающих, так и для опытных разработчиков. Хотя есть и некоторые сложности, например обнаружение антиботами и ограничения масштабирования, применение умных стратегий, таких как режим UC и настройки прокси, может значительно повысить ваши шансы на успех.
Если вы всерьёз занимаетесь веб-скрапингом, SeleniumBase нужно освоить. По мере развития инструментов автоматизации умение адаптироваться и использовать такие фреймворки становится ключом к тому, чтобы оставаться на шаг впереди в постоянно меняющемся мире веб-скрапинга.

