В современном мире аналитики и исследователи всё чаще обращаются к Power Query – мощному инструменту ETL (Extract‑Transform‑Load), встроенному в Excel и Power BI. Он позволяет не только импортировать данные из файлов и баз, но и выполнять веб‑запросы к открытым источникам в интернете. В этой статье мы покажем, как с помощью Power Query собрать и поддерживать в актуальном состоянии список контактов знахарок (целительниц, травниц) Дальнего Востока.
Содержание
- Почему Power Query подходит для веб‑запросов?
- Юридические и этические аспекты сбора контактов
- Подготовка: что нужно знать перед началом
- Пошаговое руководство: импорт данных с веб‑страницы
- Пример M‑кода для получения контактов знахарок
- Полезные советы и типичные подводные камни
- Как поддерживать базу актуальной
Почему Power Query подходит для веб‑запросов?
- Простота интерфейса. Нет необходимости писать сложные скрипты на Python или R – всё делается через визуальный редактор.
- Автоматическое обновление. После настройки запрос можно обновлять одним нажатием кнопки «Обновить» или по расписанию в Power BI Service.
- Поддержка параметров. Можно передавать в запрос переменные (например, регион или тип практики) и получать динамические результаты.
Юридические и этические аспекты сбора контактов
Перед тем как приступать к сбору данных, важно помнить следующее:
- Проверяйте доступность информации. Собирайте только те данные, которые открыто опубликованы на сайтах (например, в разделе «Контакты», «О нас», публичные каталоги).
- Уважайте robots.txt. Если сайт запрещает сканирование определённых разделов, не обходите эти ограничения.
- Не нарушайте персональные данные. Если контакт содержит личную информацию (например, номер телефона без согласия), используйте его только для законных целей (исследование, справочник с согласия субъекта);
- Указывайте источник. При дальнейшем использовании собранных данных указывайте, откуда они взяты.
Подготовка: что нужно знать перед началом
- Определите целевые сайты. На Дальнем Востоке часто встречаются региональные порталы здоровья, форумы травников, страницы в соцсетях (ВКонтакте, Одноклассники) и каталоги альтернативной медицины.
- Изучите структуру страницы. Откройте страницу в браузере, посмотрите, где находятся контактные данные (таблица, список
<ul>, карточки). Это поможет выбрать правильный селектор в Power Query. - Проверьте наличие пагинации или AJAX‑загрузки. Если данные подгружаются динамически, возможно потребуется использовать параметры URL или подключаться к API сайта.
- Соберите список URL‑ов. Сохраните их в отдельной таблице Excel – это упростит последующий импорт через функцию
Web.Contentsс параметромUrl.
Пошаговое руководство: импорт данных с веб‑страницы
Ниже описан типичный workflow в Excel (аналогичен в Power BI Desktop).
- Получить данные → Из других источников → Из веба.
- Вставьте URL целевой страницы и нажмите «OK».
- Power Query выполнит запрос и покажетNavigator – список обнаруженных объектов (таблицы, элементы).
- Выберите нужную таблицу (обычно она отмечена иконкой таблицы) и нажмите «Преобразовать данные».
- В редакторе Power Query выполните необходимые преобразования:
- Удалите лишние столбцы (Удалить столбцы).
- Переименуйте столбцы в понятные имена (Переименовать).
- Разделите ячейки, если в них содержится несколько данных (например, ФИО и телефон в одной строке) через Разделить столбец → По разделителю.
- Очистите данные: удалите пробелы в начале/конце (Формат → Trim), приведите телефон к единому формату (Заменить значения).
- Удалите дубликаты (Удалить строки → Удалить дубликаты).
- Нажмите «Закрыть и загрузить» – данные окажутся на листе Excel (или в модели данных Power BI).
- Для обновления достаточно нажать кнопку «Обновить» или настроить автоматическое обновление в Power BI Service;
Пример M‑кода для получения контактов знахарок
Если вы предпочитаете работать непосредственно с языком M, вот базовый шаблон, который можно адаптировать под конкретный сайт.
Шаг 1. Определяем базовый URL и параметры.
let
BaseUrl = "https://example-dv.ru/znaharki/",
// Предположим, что на сайте есть пагинация ?page=1, ?page=2 и т.д.
PageNumbers = {1..5}, // количество страниц для обхода
GetPage = (page as number) =>
let
Source = Web.Contents(BaseUrl & "?page=" & Text.From(page)), HtmlTable = Html.Table(Source, {{"Контакты", "table"}}), in
PromotedHeaders,
// Шаг 2. Применяем функцию ко всем страницам и объединяем результаты
AllPages = List.Transform(PageNumbers, GetPage),
CombinedTable = Table.Combine(AllPages),
// Шаг 3. Очистка и приведение к нужному виду
CleanedTable =
Table.SelectColumns(CombinedTable, {"Имя", "Телефон", "Электронная почта", "Город"}),
RenamedTable =
Table.RenameColumns(CleanedTable, {
{"Имя", "ФИО"},
{"Телефон", "Телефон"},
{"Электронная почта", "Email"},
{"Город", "Регион"}
}),
FinalTable =
Table.Distinct(RemovedDuplicates)
in
FinalTable
После получения таблицы вы можете добавить дополнительные шаги: разбить ФИО на фамилию/имя/отчество, проверить формат телефона через регулярные выражения (функция Text.Replace с шаблоном) и т.д.
Полезные советы и типичные подводные камни
- Ограничения по частоте запросов. Некоторые сайты блокируют IP при слишком частых обращениях. Добавьте паузу между запросами через функцию
Thread.Sleep(доступна в Power Query через#shared) или ограничьте количество одновременно обрабатываемых страниц. - Кодировка. На некоторых региональных порталах используется windows‑1251. Укажите её явно:
Web.Contents(url, [Content=Text.ToBinary("", Encoding.Windows1251)]). - Обработка ошибок. Оберните запрос в
try … otherwise, чтобы один неудачный запрос не прерывал весь процесс:
GetPageSafe = (page as number) => try GetPage(page) otherwise null
- Сохранение промежуточных результатов. При больших объёмах данных полезно сохранять каждый этап в отдельный лист или файл, чтобы можно было откатиться к предыдущему шагу без повторного скачивания.
- Проверка актуальности. После загрузки добавьте столбец
Дата загрузкис функциейDateTime.LocalNow– так вы всегда будете знать, насколько свежи ваши данные.
Как поддерживать базу актуальной
- Настройте расписание обновления. В Power BI Service можно задать ежедневное или еженедельное обновление набора данных;
- Используйте параметры. Создайте параметр
LastUpdateDateи сравнивайте его с датой последней модификации на stronie (если она доступна в метаданных). Если дата не изменилась – пропускайте загрузку. - Архивируйте старые записи. При обновлении сохраняйте предыдущую версию в отдельную таблицу (
Archive) – это позволит анализировать динамику изменений контактов (например, появление новых специалистов). - Обогащайте данные. После базовой загрузки можно дополнить информацию через другие источники: соцсети (по имени и региону), открытые реестры медицинских практик, отзывы на форумах.
Power Query предоставляет удобный и нетребовательный к программированию способ собирать, очищать и поддерживать в актуальном состоянии веб‑данные, включая контакты знахарок Дальнего Востока. Следуя представленным рекомендациям — от юридической проверки источников до тонкой настройки M‑скриптов — вы сможете создать надежный справочник, который будет полезен исследователям, практикам альтернативной медицины и всем, кто интересуется региональными традициями целительства.
Помните: ключ к успеху — это уважение к источникам данных, аккуратная обработка информации и регулярное обновление. Тогда ваш справочник будет не только полным, но и этически корректным.