Автоматизация поиска эзотерических специалистов в Херсонской и Запорожской областях с помощью Microsoft Power Automate

Устали искать контакты астрологов вручную? Настройте Power Automate для сбора актуальных баз эзотериков в Херсонской и Запорожской областях за минуты!

В условиях современной цифровизации рутинные задачи сбора информации требуют автоматизации․ Поиск контактов узких специалистов — таких как гадалки, астрологи или эзотерические практики — в конкретных географических регионах (Херсонская и Запорожская области) вручную занимает много времени и не гарантирует актуальности данных․ Microsoft Power Automate (ранее Microsoft Flow) предоставляет мощный инструментарий для создания бескодовых (low-code) рабочих процессов, которые могут регулярно сканировать открытые источники, агрегировать данные и доставлять их в удобном формате․

Зачем автоматизировать этот процесс?

  • Экономия времени: Исключается необходимость ежедневно проверять доски объявлений, соцсети и карты․
  • Актуальность: Поток (flow) запускается по расписанию (например, каждое утро), обеспечивая свежие данные․
  • Структурирование: Неструктурированный текст (объявления, посты) превращается в таблицу Excel, список SharePoint или сообщение в Teams/Telegram с полями: Имя, Телефон, Город, Услуги, Цена, Ссылка на профиль․
  • Фильтрация: Автоматический отсев нерелевантных результатов (например, обучающих курсов или товаров) по ключевым словам․

Архитектура решения на Power Automate

Поскольку единого официального API «базы гадалок» не существует, решение строится на паттерне Web Scraping (парсинг открытых веб-источников) с использованием встроенных действий Power Automate или вызова внешних скриптов (Azure Functions / Custom Connectors)․

Основные компоненты потока:

  1. Триггер (Trigger): Recurrence (Повторение) — запуск по расписанию (например, ежедневно в 09:00)․
  2. Действия получения данных (Data Retrieval):
    • HTTP Request: GET-запросы к публичным API карт (Google Places API, Yandex Maps API, 2GIS API) с параметрами query=гадалка, location=Херсон/Запорожье, radius=50000․
  3. Парсинг и извлечение (Parsing):
    • Для JSON (API карт) — действие Parse JSON․
  4. Фильтрация и дедупликация: Действие Filter Array (по ключевым словам: «гадание», «таро», «руны», «астролог», «предсказание») и Select для формирования единой схемы․ Удаление дублей по номеру телефона или ссылке профиля․
  5. Обогащение данных (Enrichment): Проверка номеров через сервисы валидации, геокодирование адресов для точного привязывания к области/району․
  6. Сохранение и уведомление (Sink):
    • Добавление строк в Excel Online (Business) или Google Sheets․
    • Создание элементов в списке SharePoint․
    • Отправка сводного отчета в Microsoft Teams, Outlook или Telegram (через HTTP Webhook)․

Пошаговая реализация (Пример для Excel + HTTP + Parse JSON)

Шаг 1: Создание потока и настройка триггера

  1. Заходим на make․powerautomate․com -> Create -> Scheduled cloud flow․
  2. Название: Daily_Fortune_Tellers_Search_Kherson_Zaporizhzhia․
  3. Повторение: Каждый день, Время: 09:00, Часовой пояс: (UTC+02:00) Киев․

Шаг 2: Определение источников и параметров запроса

Лучше всего использовать API картографических сервисов, так как они возвращают структурированный JSON․

Пример для 2GIS / Яндекс․Карты / Google Places (требуется API Key):

  • Добавляем действие HTTP (Premium лицензия может потребоваться для некоторых коннекторов, но стандартный HTTP доступен везде)․
  • Method: GET․
  • URI: https://catalog․api․2gis․com/3․0/items?q=гадалка®ion_id=ХЕРСОН_ИД&fields=items․point,items․contact_groups,items․schedule&key=ВАШ_КЛЮЧ․
  • Аналогичный запрос для Запорожской области (другой region_id)․

Важно: Для работы с API карт необходимо зарегистрироваться в кабинете разработчика соответствующего сервиса и получить API Key․ Обратите внимание на лимиты запросов (Rate Limits)․

Шаг 3: Парсинг JSON-ответа

  1. Добавляем действие Parse JSON․
  2. Content: body('HTTP_Запрос_К_Херсону') (или динамическое содержимое Body)․
  3. Schema: Нажмите «Generate from sample» и вставьте пример успешного ответа API․
  4. Пример схемы (упрощенно):
{
 "type": "object",
 "properties": {
 "result": {
 "type": "object",
 "properties": {
 "items": {
 "type": "array",
 "items": {
 "type": "object",
 "properties": {
 "id": {"type": "string"},
 "name": {"type": "string"},
 "address_name": {"type": "string"},
 "contact_groups": {
 "type": "array",
 "items": {
 "type": "object",
 "properties": {
 "contacts": {
 "type": "array",
 "items": {
 "type": "object",
 "properties": {
 "type": {"type": "string"},
 "value": {"type": "string"}
 }
 }
 }
 }
 }
 },
 "point": {
 "type": "object",
 "properties": {
 "lat": {"type": "number"},
 "lon": {"type": "number"}
 }
 }
 } }
 }
 }
 }
 }
}

Шаг 4: Объединение и фильтрация данных

  1. Добавляем действие Select (или Compose с union) для объединения массивов `items` из ответа по Херсону и Запорожью в один массив․
  2. Добавляем Filter Array․
    • From: Результат Select․
    • Condition: item?['name'] contains «гадал» OR «таро» OR «астролог» OR «маг» OR «предсказ»․
    • Это отсеет организации с похожими названиями, но другой спецификой (например, «Магазин эзотерики» без услуг гадания)․
  3. Добавляем Select (Data Operation) для проекции только нужных полей:
    • Имя: item?['name']
    • Город/Адрес: item?['address_name']
    • Телефон: first(item?['contact_groups'])?['contacts']?[0]?['value'] (с проверкой на null через coalesce)․
    • Координаты: concat(string(item?['point']?['lat']), ', ', string(item?['point']?['lon']))
    • Источник: «2GIS API»
    • Дата проверки: utcNow

Шаг 5: Запись в Excel (OneDrive / SharePoint)

  1. Подготовьте файл Excel (например, FortuneTellers_Data․xlsx) на OneDrive для бизнеса или в библиотеке SharePoint․ Создайте таблицу (Ctrl+T) с заголовками: ID, Имя, Адрес, Телефон, Координаты, Источник, ДатаПроверки․
  2. Добавьте действие List rows present in a table (чтобы проверить существующие ID и не создавать дубли)․
  3. Добавьте Apply to each по выходу из последнего Select (отфильтрованные новые записи)․
  4. Внутри цикла:
    • Condition: Проверка, есть ли item?['ID'] в массиве существующих ID (выражение: contains(body('List_rows')?['value'], item?['ID']))․
    • If No (False): Действие Add a row into a table․ Заполните поля динамическим содержимым из item․

Шаг 6: Уведомление о новых записях

После цикла (или внутри ветки If No) добавьте действие Post message in a chat or channel (Teams) или Send an email (V2)․

Тема: Новые контакты гадалок (Херсон/Запорожье): @{length(body(‘Filter_Array’))} шт․

API карт не охватывают частных практиков, размещающих объявления на OLX, Lun․ua или в локальных группах․ Для этого нужен парсинг HTML․

Вариант А: Нативные действия Power Automate (Сложно, хрупко)

  1. HTTP GET на URL страницы поиска (например, https://www․olx․ua/uk/uslugi/q-гадалка/?search%5Bfilter_enum_region_id%5D=ХЕРСОН)․
  2. Использование Compose с регулярными выражениями (Regex) в действии Match (или через выражения split/substring) для вырезания телефонов, имен и ссылок․
  3. Минусы: Любое изменение верстки сайта ломает поток․ Сложно обработать пагинацию (переход по страницам)․ Сайты часто блокируют ботов (Cloudflare, User-Agent checks)․

Вариант Б: Azure Functions / Custom Connector (Рекомендуемый проф․ подход)

Выносим грязную работу парсинга в код (Python/Node․js/C#), развернутый как Azure Function․

  1. Создаем Azure Function (HTTP Trigger) на Python с библиотеками requests, beautifulsoup4, playwright (для JS-сайтов)․
  2. Функция принимает параметры: region, keywords, pages․
  3. Возвращает чистый JSON: [{name, phone, url, city, source}, ․․․]․
  4. В Power Automate: Действие HTTP -> вызов нашей Azure Function -> Parse JSON -> стандартная обработка (Фильтр -> Excel -> Уведомление)․

Плюсы: Надежность, возможность обхода защиты (ротация прокси, User-Agent, рендеринг JS), легкое обновление логики парсинга без изменения потока․

Работа с особенностями регионов (Херсонская и Запорожская области)

  • Геокодирование: Используйте координаты центров городов (Херсон: 46․6354, 32․6169; Запорожье: 47․8388, 35․1396) и радиус поиска 50-100 км для покрытия области․
  • Фильтрация по адресу: В ответе API проверяйте поле address_name или city на вхождение строк: «Херсон», «Каховка», «Новая Каховка», «Геническ», «Скадовск», «Запорожье», «Мелитополь», «Бердянск», «Энергодар», «Токмак», «Приморск»․
  • Язык запросов: Формируйте запросы на русском и украинском: «гадалка», «гадальня», «таро», «астролог», «віщун», «таро́лог», «астролог»․

Обработка ошибок и мониторинг (Run History & Alerting)

Автоматизация должна быть устойчивой к сбоям источников․

  • Configure Run After: Настройте действия «Send Email (Error)» или «Post to Teams (Alert)» на запуск, если предыдущее действие завершилось со статусом Failed, Skipped или Timed Out․
  • Terminate: В блоке Catch (после Scope при ошибке) используйте Terminate со статусом Failed, чтобы запуск отображался как ошибочный в истории․
  • Analytics: Регулярно проверяйте Run History․ Настройте Power BI отчет по логам потока (через коннектор Power Automate Management) для отслеживания тренда количества найденных контактов․

Юридические и этические аспекты (Compliance)

Критически важно соблюдать:

  1. GDPR / Закон Украины «О защите персональных данных»: Номера телефонов и имена — это персональные данные․ Их сбор и хранение в Excel/SharePoint требует правовой основы (согласие субъекта или законный интерес)․ Рекомендация: Хранить только открытые для индексации контакты, не разглашать базу третьим лицам, устанавливать сроки хранения (Retention Policy) и удалять данные по запросу․
  2. Условия использования сайтов (ToS): Парсинг OLX, Google Maps, Яндекс․Карт часто запрещен ToS («Scraping prohibited»)․ Использование официальных API — единственный легальный путь․ Нарушение ToS ведет к блокировке IP/аккаунта и правовым рискам․
  3. Robots․txt: Всегда проверяйте domain․com/robots․txt перед парсингом․
  4. Нагрузка: Добавляйте задержки (Delay действие, 1-2 сек) между запросами в циклах Apply to each, чтобы не DoS-ить источник․

Оптимизация и расширение функционала

Идея улучшения Инструменты Power Platform Описание
Веб-интерфейс для менеджера Power Apps (Canvas App) Приложение для просмотра базы, фильтрации по городу/услуге, пометки «Позвонил/Актуально», запуска потока обновления кнопкой․
ИИ-классификация услуг AI Builder / Azure OpenAI (HTTP call) Автоматическое определение типа гадания (Таро, Руны, Натальная карта, Магия) по тексту объявления․
Чат-бот для клиентов Power Virtual Agents (Copilot Studio) Бот в Teams/Telegram/Web: «Найди гадалку на Таро в Мелитополе» -> запрашивает базу (Dataverse/SQL) -> выдает контакты․
Хранение в БД Dataverse / Azure SQL Замена Excel на реляционную БД для надежности, версионирования и сложных отчетов․
Мониторинг цен Power Automate + AI Builder Извлечение цены из текста объявления, построение графика средней цены на услугу по регионам за месяц․

Чек-лист перед запуском в продакшн

  • [ ] Получены API Keys для 2GIS / Яндекс / Google Places (с включенным Places API / Geocoding API)․
  • [ ] Настроены Connection References (Ссылки на подключения) для HTTP, Excel, Teams — для удобства переноса между средами (Dev -> Prod)․
  • [ ] Включена политика DLP (Data Loss Prevention) в среде, разрешающая используемые коннекторы․
  • [ ] Протестирован поток на тестовой таблице Excel / тестовом чате Teams․
  • [ ] Настроены алерты на ошибки (Run After -> Teams/Email)․
  • [ ] Документирована схема потока (описание переменных, логика Regex, ссылки на API docs) в OneNote / Wiki команды․
  • [ ] Проведена правовая экспертиза по хранению ПДн (персональных данных)․

Использование Microsoft Power Automate для автоматизации поиска гадалок в Херсонской и Запорожской областях трансформирует хаотичный ручной поиск в управляемый, прозрачный и масштабируемый бизнес-процесс․ Ключ к успеху — гибридный подход: использование официальных API картографических сервисов для базовой геолокации и контактов, дополненное (при необходимости и легальной возможности) парсингом нишевых досок объявлений через выделенные Azure Functions․

Такой подход не только экономит часы ручной работы, но и создает ценный информационный актив (структурированную базу контактов), который может быть использован для маркетинга, исследований рынка эзотерических услуг или построения сервиса-посредника․ Главное — помнить о этике сбора данных и соблюдении Terms of Service используемых платформ․


Статья подготовлена в ознакомительных целях․ При реализации обязательно проконсультируйтесь с юристом по вопросам обработки персональных данных и соблюдению Условий использования целевых веб-ресурсов․