Веб-скрейпер на Node.js для сбора данных о домах для престарелых

10 000 руб. за проект
21 января 2025, 14:07 • 2 отклика • 11 просмотров
Задача: Разработать веб-скрейпер на Node.js для автоматизированного сбора данных с сайта, посвящённого поиску мест ухода за пожилыми людьми. Помимо сбора данных, реализовать минимальный пользовательский интерфейс (UI) для удобной работы с инструментом.


Основные требования:
  1. Сбор данных:

    • Сайт содержит две структуры данных:
      1. Общая таблица с информацией о всех институциях.
      2. Страницы каждой отдельной институции с подробной информацией (около 20 полей для каждой).
    • Скрейпер должен собирать данные из обоих уровней:
      • Общая таблица: собрать базовые данные (название, адрес, основные параметры).
      • Страницы институций: извлечь более детализированную информацию.
  2. Маскировка под человека:

    • Реализация запросов должна быть выполнена так, чтобы минимизировать риск обнаружения скрейпинга:
      • Использование задержек между запросами с рандомизацией.
      • Изменение User-Agent при каждом запросе.
      • Поддержка прокси-серверов (опционально).
      • Использование механизма эмуляции браузера, например, через Puppeteer.
  3. Авторизация:

    • Сайт требует авторизацию через логин и пароль.
    • Скрейпер должен поддерживать ввод учетных данных (логин/пароль) для выполнения авторизации.
  4. Хранение данных:

    • Данные должны быть сохранены в формате CSV или JSON для дальнейшего анализа.
    • Поддержка логирования процесса (например, список успешных/неудачных скрейпингов).
  5. Минимальный пользовательский интерфейс (UI):

    • Веб-интерфейс или десктопное приложение с функциями:
      • Ввод логина и пароля.
      • Настройка параметров скрейпинга (задержка запросов, выбор институций и т.д.).
      • Запуск, остановка, и мониторинг процесса сбора данных.
      • Возможность экспорта собранных данных.

Технические детали:
  1. Технологии:

    • Node.js
    • Puppeteer или Playwright (для работы с динамическими страницами и эмуляции браузера).
    • Express.js (для создания интерфейса) или Electron (если предпочтение отдается десктопному приложению).
  2. Архитектура:

    • Модульная структура:
      • Авторизация: отдельный модуль для работы с логином/паролем.
      • Сбор данных: модуль для обработки таблиц и страниц институций.
      • Интерфейс: модуль для визуализации и управления процессом.
  3. Дополнительные функции:

    • Поддержка многопоточности (если скрейпинг нескольких страниц требует ускорения).
    • Автоматическая обработка ошибок (например, повторный запрос при временной неудаче).
  4. Тестирование:

    • Проверить скрейпер на стабильность работы с большим объемом данных.
    • Убедиться в корректности сохранения данных.

Критерии завершения:
  • Скрипт успешно авторизуется на сайте и собирает данные в указанном формате.
  • Реализован минимальный интерфейс для управления процессом.
  • Данные сохраняются без ошибок, и инструмент работает без блокировки со стороны сайта.