Вебскрапінг за допомогою SeleniumBase

Вебскрапінг із SeleniumBase та Python у 2026 році

У цій статті я проведу вас через SeleniumBase ключові можливості, покажемо, як використовувати його для вебскрапінгу, і поділимося практичними порадами щодо подолання сучасних викликів у вебі. Якщо ви тільки починаєте зі скрапінгом або хочете підвищити свій рівень, SeleniumBase пропонує простий спосіб стартувати.

Що таке SeleniumBase?

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

Альтернативне рішення — автоматизовані інструменти вебскрапінгу

Якщо вам потрібно виконувати скрапінг у великому масштабі або працювати зі складними сайтами з просунутими технологіями захисту від скрапінгу, можу порадити спробувати один із наведених нижче інструментів для вебскрапінгу, з якими працює моє агентство:

  1. Bright Data — 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.

Setting Up 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-контент цільової сторінки:

from seleniumbase import BaseCase
class Scraper(BaseCase):
def test_get_html(self): self.open("https://www.scrapingcourse.com/ecommerce/")
page_html = self.get_page_source()
print(page_html)

Запустіть вебскрапер за допомогою команди pytest:

pytest scraper.py -s

Наведений вище код відкриває сторінку електронної комерції та витягує HTML, який виводиться в термінал. Це слугує основою для складніших завдань зі скрапінгу.

Extracting Specific Data

Щоб зробити вебскрапер кориснішим, часто потрібно націлюватися на конкретні елементи, як-от назви товарів, зображення та URL-адреси. SeleniumBase підтримує CSS-селектори, XPath і ID для пошуку елементів. Ось як витягти різні типи інформації:

Scraping Product Names

Визначте HTML-структуру назви товару, яка в цьому прикладі міститься в тегу h2 із класом product-name. Наведений нижче код демонструє, як скрапити назви товарів:

from seleniumbase import BaseCase
class Scraper(BaseCase):
def test_get_product_names(self): self.open("https://www.scrapingcourse.com/ecommerce/")
product_names = self.find_elements("h2.product-name")
names = [product.text for product in product_names]
print(імена)

Scraping Product Images

Щоб зібрати URL-адреси зображень, знайдіть теги img із класом product-image. Наведений нижче код витягує URL-адреси зображень:

from seleniumbase import BaseCase
class Scraper(BaseCase):
def test_get_image_urls(self): self.open("https://www.scrapingcourse.com/ecommerce/")
image_elements = self.find_elements("img.product-image")
image_urls = [image.get_attribute("src") for image in image_elements]
print(image_urls)

Scraping Product Links

Аналогічно витягніть URL-адреси товарів із тегів a з класом woocommerce-LoopProduct-link:

from seleniumbase import BaseCase
class Scraper(BaseCase):
def test_get_product_links(self): self.open("https://www.scrapingcourse.com/ecommerce/")
link_elements = self.find_elements("a.woocommerce-LoopProduct-link")
links = [link.get_attribute("href") for link in link_elements]
print(посилання)

Automating Browser Interactions

У деяких випадках збирання статичного вмісту недостатньо, особливо для сайтів, які завантажують контент динамічно або потребують взаємодії користувача. SeleniumBase підтримує широкий набір дій у браузері, зокрема кліки, прокручування та надсилання форм.

Приклад: автоматизація надсилання форми

Припустімо, сайт вимагає облікові дані для входу. Ось скрипт для входу та вебскрапінгу вмісту:

from seleniumbase import BaseCase
class Scraper(BaseCase):
def test_login_and_scrape(self): self.open("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 дає змогу вебскраперам імітувати поведінку реального користувача шляхом зміни браузерних відбитків. Ось як його ввімкнути:

from seleniumbase import Driver
class Scraper(BaseCase):
def test_bypass_bot_protection(self):
driver = Driver(uc=True)
driver.open("https://www.scrapingcourse.com/antibot-challenge")
driver.uc_gui_click_captcha()
page_html = driver.get_page_source()
print(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-режимі: Деякі сайти можуть виявляти безголові браузери.
  • Scale Limitations: Він не підходить для вебскрапінгу великих обсягів даних на численних сторінках через обмеження швидкості.
  • Anti-bot Adaptation: Оскільки це інструмент із відкритим кодом, розробники антибот-засобів можуть оновлювати свої алгоритми, щоб виявляти SeleniumBase.

Conclusion

Вебскрапінг із SeleniumBase є гнучким і потужним способом збирати дані, автоматизувати завдання та взаємодіяти із сайтами. Я вважаю його особливо привабливим, тому що він простий у використанні та пропонує сильні можливості автоматизації, що робить його ідеальним як для початківців, так і для досвідчених розробників. Хоча існують певні виклики, як-от виявлення антибот-системами та обмеження масштабу, використання розумних стратегій, таких як режим UC і налаштування проксі, може суттєво підвищити ваші шанси на успіх.

Якщо ви серйозно займаєтеся вебскрапінгом, опанування SeleniumBase є обов’язковим. Оскільки інструменти автоматизації продовжують еволюціонувати, здатність адаптуватися й використовувати ці фреймворки є ключем до того, щоб залишатися попереду в постійно мінливому світі вебскрапінгу.

Схожі записи