Есть пара страниц, с которых хотелось бы получать информацию по ценам. Увы, "Добавление страницы с использованием примеров" в Power BI не работает на данном сайте.
Прошу подсказать, более-менее универсальный способ, который позволит получать данные о ценах с разных страниц. Важно. Могут быть 2-3 цифры:
Полная стоимость курса
Оплата частями
Стоимость модуля
Желательно получить их все, вместе с сопровождающим текстом.
Увы, такого нет в природе. Вариант для приближения, основанный на CSS Selector Reference, благо есть такая возможность в Power BI Power Query, но напрочь отсутствующая в Excel его версии.
Код
let
Source = Web.BrowserContents("https://netology.ru/programs/datamarketolog"),
extract = Html.Table(Source, {{"price", "div.shared-landing-ui-kit-components-PhoneLeadForm-phoneLeadForm-module__title--2haaI"}})
in
extract
Андрей VG, благодарю за вариант, буду тестировать. Подскажите пожалуйста, в данном случае возможно решение, где поиск выполняется как по обычному тексту? Т.е. на входе текст (весь код), сначала находится ₽, далее отступ назад чтобы найти ">. Значение между ними извлекается.
Это будет полная стоимость курса. чтобы найти другие цены, описанная выше комбинация игнорируется и находится вторая.
ivanka написал: в данном случае возможно решение, где поиск выполняется как по обычному тексту?
Возможно конечно. Просто начинаете строить логическое решение. Извлекаете подстроку до ₽ и ищете последнее вхождение >, например, разбив по этому символу и последний элемент и будет. Смотрите описание функции Text.BetweenDelimiters и прочие. Можете даже варианты на форуме работы с регулярными выражениями посмотреть - хотя тут придётся попотеть. В прочем, про последнее есть и статья Регулярные выражения (RegExp) в Power Query - начните с неё, если такое решение вам подходит.
Для второго Url чуть по проще
Код
let
Source = Web.BrowserContents("https://netology.ru/programs/marketing-internet-magazinov"),
extract = Html.Table(Source, {
{"name", "div.tn-atom[field=tn_text_1553702038850]"},
{"price", "div.tn-atom[field=tn_text_1597142882137]"}
},
[RowSelector="div.tn-atom[field=tn_text_1553702038850]"]),
filter = Table.SelectRows(extract, each ([price] <> null))
in
filter