Розробка Nannostomus для веб-скрапінгу

Веб-скрапінг став простішим з Nannostomus

Багатьом компаніям потрібно отримувати дані з вебсайтів для аналітики чи прийняття рішень. Але необроблені дані, які можна знайти онлайн, зазвичай не підходять для безпосереднього використання. Тому ми розробили рішення для зручного збору даних, навіть якщо команда має лише базові знання програмування.

Nannostomus — це хмарний інструмент з мікросервісною архітектурою, здатний вирішити 99.9% задач і забезпечити мінімальні витрати. Наприклад, в одному з наших проєктів вартість збору одного запису з зображенням склала $0,0001.

Виклики при створенні веб-скрапера для даних

Нерівномірне навантаження

Попередні рішення для скрапінгу не використовували AWS ресурси оптимально. Через неправильну організацію віртуальні машини завантажувалися нерівномірно: деякі EC2 інстанси були недовантаженими, тоді як інші – перевантаженими. Такий дисбаланс призводив до зростання витрат, особливо при масштабуванні.

Обмеження

Ліміти на запити або блокування IP через підозрілу активність також ускладнювали збір даних. Щоб зменшити ризик блокувань при використанні нашого веб-скрапінгу, ми застосовували проксі, ротацію IP-адрес і вводили затримки між запитами.

Високе навантаження

Ще однією проблемою було високе навантаження на базу даних під час збереження результатів. Коли занадто багато скраперів намагалися записати дані одночасно, це призводило до конфліктів при оновленні тих самих елементів. Ми застосували Optimistic Locking для контролю версій, щоб паралельні записи не перезаписували один одного.

Потрібна допомога з вашим проєктом?

Зв'яжіться з нами, щоб обговорити, як ми можемо допомогти вам ефективніше збирати дані.

Архітектура інструменту веб-скрапінгу Nannostomus

Компоненти Nannostomus для збору даних із вебсайтів

Nannostomus — хмарний інструмент для веб-скрапінгу, побудований на основі мікросервісної архітектури. Це означає, що ви можете оновлювати чи виправляти будь-яку частину системи, не зупиняючи всю роботу. Система має Mediator — безсерверний додаток, який взаємодіє між Nannostomus Console та бекенд-сервісами (WBalancer для розподілу завдань, WRegistry для керування робочими процесами та CRepository для розгортання коду). Nannostomus інтегрується з AWS, GCP і Azure, а також може бути розгорнутий локально.

Mediator у веб-скрапері Nannostomus

Mediator зв’язує Nannostomus Console (веб-інтерфейс, яким ви користуєтеся) з бекенд-сервісами. Коли ви робите запит через консоль, Mediator передає його до потрібного сервісу і повертає відповідь. Оскільки це "безсерверне" рішення, вам не потрібно турбуватися про управління серверами. Mediator забезпечує роботу без складної інфраструктури.

Програмне забезпечення для веб-скрапінгу Nannostomus

WBalancer (Work Balancer) розподіляє і збалансовує всі завдання в системі. Він перевіряє наявні віртуальні машини (NWorkers) і призначає їм невеликі завдання (чанк). Таким чином, кожна машина отримує стільки роботи, скільки може виконати на даний момент. Якщо машина закінчить раніше або почне працювати повільніше, WBalancer передає завдання іншим машинам.

Intsurfing розробив простий інструмент для веб-скрапінгу

WRegistry (Worker Registry) контролює роботу NWorkers у системі. Він автоматично запускає, вимикає та перевіряє їх стан, щоб вони завжди були готові виконувати завдання. Це постійне управління дозволяє уникнути збоїв у роботі системи та зменшити час простоїв. WRegistry забезпечує готовність NWorkers до виконання будь-яких завдань, незалежно від навантаження.

Автоматизоване ПЗ для веб-скрапінгу від Intsurfing

CRepository (Code Repository) — це безсерверний додаток у системі Nannostomus, де створюються спеціалізовані пакети програмного забезпечення, які називаються CRunner images. Ці образи виконують конкретні завдання, наприклад, скрапінг даних із вебсайтів. CRepository бере стандартний шаблон (базовий CRunner image) і додає спеціальні модулі, потрібні для конкретного завдання. Він поєднує ці елементи, створюючи повноцінний софт (Docker image), готовий до використання. Після створення пакет передається NWorkers, щоб кожне програмне забезпечення було зібране правильно та було готове до роботи.

Nannostomus скрапер для збору веб-даних

NWorker (Nannostomus Worker) — це C# додаток, який керує невеликими робочими програмами (CRunners) всередині віртуальної машини. Він відповідає за запуск, зупинку та перевірку стану CRunners, що виконують конкретні завдання. NWorker стежить за тим, щоб кожен CRunner був налаштований правильно та працював як слід. Він може одночасно керувати кількома CRunners у межах однієї віртуальної машини (AWS EC2), що дозволяє обробляти безліч завдань одночасно.

Інструмент Nannostomus для скрапінгу веб-даних

CRunner (Chunk Runner) — це C# додаток, що виконує конкретні завдання. Кожен CRunner отримує свою частину роботи (chunk). NWorker стежить за тим, щоб CRunner коректно запускався, працював і завершував завдання без помилок. Для великих проєктів завдання розбиваються на дрібніші частини, і кілька CRunner працюють паралельно. Це дозволяє системі швидше справлятися з великими завданнями, обробляючи багато невеликих частин одночасно.

Технології, які ми використовували в проєкті

C#

Docker

RabbitMQ

AWS

Amplify

AppSync

SNS

Lambda

DynamoDB

Systems Manager

Результати: ефективний інструмент для веб-скрапінгу онлайн

Nannostomus — це гнучка, масштабована система для веб-скрапінгу на базі мікросервісів. Вона надає вам усе необхідне для автоматизації збору даних. Ось її основні можливості:

  • C# бібліотека. Завдяки готовим фрагментам коду навіть початківці можуть створювати боти для збору даних.
  • Керування ресурсами. Система оптимізує роботу віртуальних машин, рівномірно розподіляючи навантаження.
  • Обробка вебсайтів партіями. Nannostomus дозволяє збирати всі доступні дані з будь-якої кількості джерел.
  • Послуги. Вбудована мережа проксі забезпечує використання кількох IP-адрес, а служба вирішення Captcha допомагає ботам обходити захист.
  • Управління проєктами. Відстежуйте процес за допомогою детальної статистики та модулів білінгу.
Приклад введення некоректних даних та результати BAIST

Перетворіть великі дані на ваші можливості

Зв'яжіться з нами сьогодні. Ми розглянемо ваш проєкт, надамо індивідуальне рішення та кошторис, і почнемо працювати, як тільки ви погодитесь.

Зв'яжіться з нами

Заповніть форму з проєктними даними, щоб ми могли запропонувати вам персоналізоване рішення.