Веб-скрейпинг с помощью SeleniumBase

Веб-скрапинг с помощью SeleniumBase и Python в 2026 году

В этой статье я пошагово разберу SeleniumBase Мы рассмотрим ключевые возможности SeleniumBase, покажем, как использовать его для скрапинга, и поделимся практическими советами, как справляться с трудностями современного веба. Если вы только начинаете заниматься скрапингом или хотите выйти на новый уровень, SeleniumBase предлагает простой способ начать.

Что такое SeleniumBase?

SeleniumBase — это Python-фреймворк с открытым исходным кодом, построенный поверх Selenium и предназначенный для упрощения задач веб-автоматизации, включая тестирование и скрейпинг. В отличие от стандартного Selenium, который часто требует большого объема шаблонного кода, SeleniumBase сокращает количество повторяющегося кода благодаря встроенным инструментам для извлечения данных, автоматизации взаимодействий и обхода антибот-защиты.

Альтернативный вариант — инструменты автоматизированного веб-скрапинга

Если вам нужно собирать данные в больших масштабах или работать со сложными сайтами с продвинутой антибот-защитой, я могу посоветовать попробовать один из следующих инструментов для веб-скрейпинга, с которыми работает мое агентство:

  1. Яркие данные — Best overall for advanced scraping; features extensive proxy management and reliable APIs.
  2. Octoparse - удобный no-code-инструмент для автоматического извлечения данных с сайтов.
  3. ScrapingBee — API для разработчиков, эффективно работающее с прокси, браузерами и CAPTCHA.
  4. Scrapy — Python-фреймворк с открытым исходным кодом, отлично подходящий для обхода антибот-защиты и веб-скрейпинга.
  5. ScraperAPI — Handles tough scrapes with advanced anti-bot technologies; great for developers.
  6. 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 использует для всех запросов в рамках сессии скрапинга.

Продвинутые техники и лучшие практики

Чтобы сделать веб-скрейпер более надежным и снизить вероятность блокировки, следуйте этим рекомендациям:

  1. Use Random Delays: Вставляйте случайные паузы между действиями, чтобы имитировать поведение обычного пользователя при просмотре сайтов.
  2. Rotate User Agents: Измените строку user-agent, чтобы имитировать разные устройства и браузеры.
  3. Handle JavaScript Rendering: Use self.wait_for_element to ensure all dynamic content loads before scraping.
  4. 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 нужно освоить. По мере развития инструментов автоматизации умение адаптироваться и использовать такие фреймворки становится ключом к тому, чтобы оставаться на шаг впереди в постоянно меняющемся мире веб-скрапинга.

Похожие записи