Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 3 След.
PQ. Web-парсинг. POST запросы.
 
Цитата
написал:
Подобраться к ним это проблема решаемая, нужно только довести до совершенства headers.Но следующей проблемой будет бан он сервера.
Под доведением до совершенства вы подразумеваете cookies?
А бан, по причине количества запросов на единицу времени? - в данном случае можно было бы интервал поставить.
PQ. Web-парсинг. POST запросы.
 
Цитата
написал:
какая ошибка получается в результате запросов? файл-пример?
Ошибки никакой нет. Как и написал, при использовании стандартных инструментов к данным не подобраться. Сам запрос такой, если будет полезно:
Код
let
    url = "https://www.invitro.ru/analizes/for-doctors/",
    options = [
        Headers = [
            #"User-Agent" = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"
        ]
    ],
    Источник = Table.FromColumns({Lines.FromBinary(Web.Contents(url, options))})
in 
Источник
PQ. Web-парсинг. POST запросы.
 
Добрый день.

Подскажите, пожалуйста, как получить доступ к данным (услуга, стоимость) на странице ссылка, включая те, что открываются по мере перехода между номерами страниц (от 1 до 235).

Web.BrowserContents -> Html.Table и Text.FromBinary+Web.Contents ничего не видят. Через F12 тоже не вижу ссылок POST-запросов.
PQ. Web-парсинг. POST запросы.
 
Цитата
написал:
let
   Источник = Json.Document(Web.Contents("https://alfazdrav.ru/api/prices/tabs/?regionId=779")),
   tabs = Источник[tabs]...
Благодарю. Тоже интересен вопрос с api
Изменено: kush.near - 25.10.2024 17:39:18
PQ. Web-парсинг. POST запросы.
 
Добрый день.

Необходим скрипт PQ для доступа к данным (услуга, стоимость) на странице ссылка, включая те, что открываются по мере перехода между отделениями.

Макрос не подойдет, только PQ.
PQ. Web-парсинг. POST запросы.
 
Добрый день.

Подскажите, пожалуйста, как получить доступ к данным (услуга, стоимость) на странице ссылка, включая те, что открываются по мере перехода между отделениями?

Web.BrowserContents -> Html.Table и Text.FromBinary+Web.Contents ничего не видят. Через F12 тоже не вижу ссылок POST-запросов.
PQ. Web-парсинг. POST запросы.
 
Добрый день.

Необходим скрипт PQ для доступа к данным (услуга, стоимость) на страницах, первая из которых - ссылка, включая скрытые части под кнопками "Развернуть".

Макрос не подойдет, только PQ.
PQ. Отсутствие данных в html-коде
 
Цитата
kush.near,
Ищите нужный GET/POST запрос, который возвращает цену
например
https://helix.ru/api/catalog/items/list/v2?cityId=2&filter.categoryId=1&pagination.t...

после чего, с помощью  PQ выгружайте и обрабатывайте данные
Благодарю!
PQ. Отсутствие данных в html-коде
 
Добрый день.

Не могу разобраться, почему
Код
= Table.FromColumns({Lines.FromBinary(Web.Contents("https://helix.ru/catalog/client/vse-analizy"))})
наименования услуг видит, а цены - нет.  Есть ли в PQ способ получить данные по ценам?
PQ. Парсинг данных с сайта
 
Добрый день.

Необходим скрипт PQ для доступа к данным (услуга, стоимость) на странице ссылка, включая скрытую часть, раскрывающуюся по мере скроллинга.

Макрос не подойдет, только PQ.
PQ. Доступ к контенту на web-странице
 
Добрый день.

Подскажите, пожалуйста, как получить доступ к данным (услуга, стоимость) на странице ссылка, включая скрытую часть, раскрывающуюся по мере скроллинга?

Web.BrowserContents -> Html.Table выцепляет только первые 50 позиций, а Text.FromBinary+Web.Contents не видит цен. Через F12 тоже не вижу решений.
PQ. Нерабочие "try... otherwise..."
 
Цитата
написал:
= try Lines.FromBinary(Web.Contents(" https://polyclinika.ru/direction2/detskoeotdelenie/ ")){0} otherwise null
Благодарю.
PQ. Нерабочие "try... otherwise..."
 
Добрый день.

Подскажите, почему в следующем коде скрипт всё равно возвращает ошибку, а не null?:
Код
let
    s = try Lines.FromBinary(Web.Contents("https://polyclinika.ru/direction2/detskoeotdelenie/")) otherwise null
in
    s
Ничто не работает, после "otherwise", ни текстовое значение, ни дополнительный скрипт вставки пустой таблицы. Будто бы не видит там ошибки.

Возможно ли как то иначе настроить скрипт, чтобы пропускать такого рода ссылки?
PQ. Изменение функции для парсинга информации с вэб-страницы
 
Цитата
написал:
никто не отписался в теме

Прикрепленные файлы
nrmed.xlsx  (116.8 КБ)

Изменено: te1n  - 30.06.2023 23:15:48
Всё работает. Благодарю, буду изучать.
PQ. Изменение функции для парсинга информации с вэб-страницы
 
Добрый день.

Необходимо изменить следующую функцию так, чтобы, будучи примененной к списку URL она работала:
Код
(Ссылка)=>
let
    Источник = Function.InvokeAfter(() => try Web.BrowserContents (Ссылка, [WaitFor = [Timeout = #duration(0,0,0,10)]]) otherwise "none", #duration(0,0,00,10)),
    #"Извлеченная таблица из HTML" = Html.Table(Источник, {{"Column1", ".small"}, {"Column2", ".small + *"}, {"Column3", ".spoiler-box .currency"}}, [RowSelector=".table__item"])
in
    #"Извлеченная таблица из HTML"

На данный момент возвращает либо ошибку связанную с истечением времени ожидания (хотя Timeout стоит), либо в конечном итоге парсит информацию не со всех ссылок, хотя в предварительном просмотре всё нормально.

Список URL:
Код
let
    Источник = Table.FromColumns({Lines.FromBinary(Web.Contents("https://www.nrmed.ru/services/"))}),
    #"Строки с примененным фильтром" = Table.SelectRows(Источник, each Text.Contains([Column1], "f=""/services/") and not Text.Contains([Column1], "popup")),
    #"Извлеченный текст между разделителями" = Table.TransformColumns(#"Строки с примененным фильтром", {{"Column1", each Text.BetweenDelimiters(_, "=""/", """>"), type text}}),
    #"Добавлен пользовательский объект" = Table.AddColumn(#"Извлеченный текст между разделителями", "Пользовательский", each "https://www.nrmed.ru/" & [Column1]),
    #"Строки с примененным фильтром1" = Table.SelectRows(#"Добавлен пользовательский объект", each not Text.Contains([Пользовательский], "nav-menu")),
    #"Удаленные дубликаты1" = Table.Distinct(#"Строки с примененным фильтром1", {"Пользовательский"}),
    #"URL List" = Table.RemoveColumns(#"Удаленные дубликаты1",{"Column1"})
in
 #"URL List"
PQ. Доступ к контенту страницы на ajax
 
Цитата
написал:
ЦитатаCookie обновите
Проверил первым делом, не помогло.
Изменено: kush.near - 27.06.2023 16:04:31
PQ. Доступ к контенту страницы на ajax
 
Да, не работает, но как то же сработало однажды? Как вы получили результат?
PQ. Доступ к контенту страницы на ajax
 
Добрый день.

Существует ли способ получить доступ через PQ к ссылкам на странице?: url

Ни Web.Contents ни Web.BrowserContents их не видит.
PQ. Синтаксис Function.InvokeAfter
 
Добрый день.

Не могу разобраться, почему, но Function.InvokeAfter будучи применена к списку URL не работает в данном коде:
Код
(Ссылка)=>
let
    Источник = Function.InvokeAfter(() => try Web.BrowserContents (Ссылка, [WaitFor = [Timeout = #duration(0,0,0,10)]]) otherwise "none", #duration(0,0,00,10)),
    #"Извлеченная таблица из HTML" = Html.Table(Источник, {{"Column1", ".small"}, {"Column2", ".small + *"}, {"Column3", ".spoiler-box .currency"}}, [RowSelector=".table__item"])
in
    #"Извлеченная таблица из HTML"

Что может быть не так?
PQ. Проблемы с загрузкой информации при защите от DDoS
 
Добрый день.

Столкнулся со следующей проблемой: запрос исправно подгружает данные в предварительный просмотр PQ, однако после нажатия "Закрыть и применить" выдает ошибку: "Не удалось получить содержимое веб-страницы." Иногда ошибка не выскакивает, но я не смог отследить зависимость, с чем это связано. Пересохранение настроек источника данных не влияет на ситуацию.

На сайте стоит защита от DDos-атак, которую я частично решил с помощью Function.InvokeAfter. Также на этапе применения функции к списку URL возникают ошибки на некоторых из них, хотя если отдельно специально применить к ним функцию, проблем никаких.

Вопрос: связанны ли ошибки с защитой DDoS и если да, то почему они не устраняются даже в случае установки интервала? Какие существуют еще способы взаимодействия с такого рода защитой?

Запрос:
Код
let
    SD = Web.BrowserContents("https://www.fdoctor.ru/services/"),
    Пользовательский1 = Html.Table(SD, {{"url", "a[href^=""/""]", each "https://www.fdoctor.ru" & [Attributes][href]}}),
    #"Строки с примененным фильтром" = Table.SelectRows(Пользовательский1, each not Text.Contains([url], "offers") and not Text.Contains([url], "popup")),
    #"Удаленные дубликаты1" = Table.Distinct(#"Строки с примененным фильтром", {"url"}),
    #"Добавлен пользовательский объект" = Table.AddColumn(#"Удаленные дубликаты1", "Пользовательский", each Text.Length([url])),
    #"Строки с примененным фильтром1" = Table.SelectRows(#"Добавлен пользовательский объект", each [Пользовательский] > 25 and [Пользовательский] < 51),
    #"Строки с примененным фильтром2" = Table.SelectRows(#"Строки с примененным фильтром1", each not Text.Contains([url], "privileges") and not Text.Contains([url], "secure") and not Text.Contains([url], "poliklinika") and not Text.Contains([url], "corporate") and not Text.Contains([url], "doctors") and not Text.Contains([url], "programy") and not Text.Contains([url], "health") and not Text.Contains([url], "covid")),
    #"11" = Table.FirstN(#"Строки с примененным фильтром2",280),
    #"URL list" = Table.SelectRows(#"11", each not Text.Contains([url], "services")),
    #"Added Custom" = Table.AddColumn(#"URL list", "q", (x)=> f_site_fdoctor(x[url])),
    #"Удаленные ошибки1" = Table.RemoveRowsWithErrors(#"Added Custom", {"q"}),
    Custom1 = Table.Combine(#"Удаленные ошибки1"[q]),
    #"Удаленные дубликаты" = Table.Distinct(Custom1, {"Наименование"}),
    #"Строки с примененным фильтром3" = Table.SelectRows(#"Удаленные дубликаты", each not Text.Contains([Наименование], "Наименование")),
    #"Переименованные столбцы" = Table.RenameColumns(#"Строки с примененным фильтром3",{{"Наименование", "Услуга"}, {"Стоимость", "Цена"}}),
    #"Измененный тип" = Table.TransformColumnTypes(#"Переименованные столбцы",{{"Цена", Int64.Type}}),
    #"Удаленные ошибки" = Table.RemoveRowsWithErrors(#"Измененный тип", {"Цена"})
in
    #"Удаленные ошибки"
Применяемая функция:
Код
let
f = (x)=>[    
    a = List.Buffer({Function.InvokeAfter(() =>Web.BrowserContents(x), #duration(0,0,00,6))}){0}?,
    b = Table.Combine(List.Transform({
        Html.Table(a, {{"Column1", "DIV[id='item_priem-vracha'] > DIV.price-table-cnt.js-collapsible-inner > TABLE.price-table.js-service-prices > * > TR > :nth-child(1)"}, {"Column2", "DIV[id='item_priem-vracha'] > DIV.price-table-cnt.js-collapsible-inner > TABLE.price-table.js-service-prices > * > TR > :nth-child(2)"}}, [RowSelector="DIV[id='item_priem-vracha'] > DIV.price-table-cnt.js-collapsible-inner > TABLE.price-table.js-service-prices > * > TR"]),
        Html.Table(a, {{"Column1", "DIV[id='item_instrumentalnye-issledovaniya'] > DIV.price-table-cnt.js-collapsible-inner > TABLE.price-table.js-service-prices > * > TR > :nth-child(1)"}, {"Column2", "DIV[id='item_instrumentalnye-issledovaniya'] > DIV.price-table-cnt.js-collapsible-inner > TABLE.price-table.js-service-prices > * > TR > :nth-child(2)"}}, [RowSelector="DIV[id='item_instrumentalnye-issledovaniya'] > DIV.price-table-cnt.js-collapsible-inner > TABLE.price-table.js-service-prices > * > TR"]),
        Html.Table(a, {{"Column1", "DIV[id='item_manipulyatsii'] > DIV.price-table-cnt.js-collapsible-inner > TABLE.price-table.js-service-prices > * > TR > :nth-child(1)"}, {"Column2", "DIV[id='item_manipulyatsii'] > DIV.price-table-cnt.js-collapsible-inner > TABLE.price-table.js-service-prices > * > TR > :nth-child(2)"}}, [RowSelector="DIV[id='item_manipulyatsii'] > DIV.price-table-cnt.js-collapsible-inner > TABLE.price-table.js-service-prices > * > TR"]),
        Html.Table(a, {{"Column1", "DIV[id='item_manipulyatsii-i-protsedury'] > DIV.price-table-cnt.js-collapsible-inner > TABLE.price-table.js-service-prices > * > TR > :nth-child(1)"}, {"Column2", "DIV[id='item_manipulyatsii-i-protsedury'] > DIV.price-table-cnt.js-collapsible-inner > TABLE.price-table.js-service-prices > * > TR > :nth-child(2)"}}, [RowSelector="DIV[id='item_manipulyatsii-i-protsedury'] > DIV.price-table-cnt.js-collapsible-inner > TABLE.price-table.js-service-prices > * > TR"]),
        Html.Table(a, {{"Column1", "DIV[id='item_spravki'] > DIV.price-table-cnt.js-collapsible-inner > TABLE.price-table.js-service-prices > * > TR > :nth-child(1)"}, {"Column2", "DIV[id='item_spravki'] > DIV.price-table-cnt.js-collapsible-inner > TABLE.price-table.js-service-prices > * > TR > :nth-child(2)"}}, [RowSelector="DIV[id='item_spravki'] > DIV.price-table-cnt.js-collapsible-inner > TABLE.price-table.js-service-prices > * > TR"]),
        Html.Table(a, {{"Column1", "DIV[id='item_analizy'] > DIV.price-table-cnt.js-collapsible-inner > TABLE.price-table.js-service-prices > * > TR > :nth-child(1)"}, {"Column2", "DIV[id='item_analizy'] > DIV.price-table-cnt.js-collapsible-inner > TABLE.price-table.js-service-prices > * > TR > :nth-child(2)"}}, [RowSelector="DIV[id='item_analizy'] > DIV.price-table-cnt.js-collapsible-inner > TABLE.price-table.js-service-prices > * > TR"]),
        Html.Table(a, {{"Column1", "DIV[id='item_operatsii'] > DIV.price-table-cnt.js-collapsible-inner > TABLE.price-table.js-service-prices > * > TR > :nth-child(1)"}, {"Column2", "DIV[id='item_operatsii'] > DIV.price-table-cnt.js-collapsible-inner > TABLE.price-table.js-service-prices > * > TR > :nth-child(2)"}}, [RowSelector="DIV[id='item_operatsii'] > DIV.price-table-cnt.js-collapsible-inner > TABLE.price-table.js-service-prices > * > TR"]),
        Html.Table(a, {{"Column1", "TABLE.price-table.js-service-prices > * > TR > :nth-child(1)"}, {"Column2", "TABLE.price-table.js-service-prices > * > TR > :nth-child(2)"}}, [RowSelector="TABLE.price-table.js-service-prices > * > TR"])
    }, Table.PromoteHeaders))[[Наименование], [Стоимость]]?][b]
in
    f
PQ парсинг табличных данных и защита от DDOS-атак
 
Добрый день.

Необходимо изменить функцию
Код
(Ссылка)=>
let
    Источник = try Web.BrowserContents(Ссылка) otherwise "none",
    #"Извлеченная таблица из HTML" = Html.Table(Источник, {{"Column1", ".col-num"}, {"Column2", ".col-test-name *"}, {"Column3", ".col-price"}}, [RowSelector=".tests-items LI"]),
    #"Удаленные столбцы" = Table.RemoveColumns(#"Извлеченная таблица из HTML",{"Column1"}),
    #"Замененное значение" = Table.ReplaceValue(#"Удаленные столбцы","Р","",Replacer.ReplaceText,{"Column3"}),
    #"Измененный тип" = Table.TransformColumnTypes(#"Замененное значение",{{"Column3", Int64.Type}})
in
    #"Измененный тип"
так, чтобы она собирала табличные данные со списка URL
Код
let
    Источник = Table.FromColumns({Lines.FromBinary(Web.Contents("https://www.labquest.ru/analizy-i-tseny/"))}),
    #"Строки с примененным фильтром" = Table.SelectRows(Источник, each Text.Contains([Column1], "/analizy-i-tseny/")),
    #"Извлеченный текст между разделителями" = Table.TransformColumns(#"Строки с примененным фильтром", {{"Column1", each Text.BetweenDelimiters(_, "href=""", """"), type text}}),
    #"Удаленные дубликаты" = Table.Distinct(#"Извлеченный текст между разделителями"),
    #"Строки с примененным фильтром1" = Table.SelectRows(#"Удаленные дубликаты", each [Column1] <> null and [Column1] <> ""),
    #"Строки с примененным фильтром2" = Table.SelectRows(#"Строки с примененным фильтром1", each not Text.Contains([Column1], "https://www.labquest.ru")),
    #"Строки с примененным фильтром3" = Table.SelectRows(#"Строки с примененным фильтром2", each ([Column1] <> "#")),
    #"Разделить столбец по разделителю" = Table.SplitColumn(#"Строки с примененным фильтром3", "Column1", Splitter.SplitTextByDelimiter("/", QuoteStyle.Csv), {"Column1.1", "Column1.2", "Column1.3", "Column1.4", "Column1.5", "Column1.6", "Column1.7"}),
    #"Удаленные столбцы" = Table.RemoveColumns(#"Разделить столбец по разделителю",{"Column1.1", "Column1.6", "Column1.7"}),
    #"Объединенные столбцы1" = Table.CombineColumns(#"Удаленные столбцы",{"Column1.2", "Column1.3", "Column1.4", "Column1.5"},Combiner.CombineTextByDelimiter("/", QuoteStyle.None),"Сведено"),
    #"Замененное значение1" = Table.ReplaceValue(#"Объединенные столбцы1","//","/",Replacer.ReplaceText,{"Сведено"}),
    #"Удаленные верхние строки" = Table.Skip(#"Замененное значение1",1),
    #"Замененное значение2" = Table.ReplaceValue(#"Удаленные верхние строки","analizy-i-tseny","/analizy-i-tseny",Replacer.ReplaceText,{"Сведено"}),
    #"Удаленные дубликаты2" = Table.Distinct(#"Замененное значение2"),
    #"Переименованные столбцы1" = Table.RenameColumns(#"Удаленные дубликаты2",{{"Сведено", "Column1"}}),
    #"Добавлен пользовательский объект3" = Table.AddColumn(#"Переименованные столбцы1", "Пользовательский", each "www.labquest.ru"),
    #"Объединенные столбцы3" = Table.CombineColumns(#"Добавлен пользовательский объект3",{"Пользовательский", "Column1"},Combiner.CombineTextByDelimiter("", QuoteStyle.None),"Сведено"),
    #"Добавлен пользовательский объект4" = Table.AddColumn(#"Объединенные столбцы3", "Пользовательский", each #"f_labquest_url_extract (2)"([Сведено])),
    #"Развернутый элемент Пользовательский1" = Table.ExpandTableColumn(#"Добавлен пользовательский объект4", "Пользовательский", {"Column1"}, {"Пользовательский.Column1"}),
    #"Добавлен пользовательский объект5" = Table.AddColumn(#"Развернутый элемент Пользовательский1", "Пользовательский", each if [Пользовательский.Column1]=null then [Сведено] else "www.labquest.ru"&[Пользовательский.Column1]),
    #"Удаленные столбцы2" = Table.RemoveColumns(#"Добавлен пользовательский объект5",{"Сведено", "Пользовательский.Column1"}),
    #"Добавлен пользовательский объект6" = Table.AddColumn(#"Удаленные столбцы2", "Пользовательский.1", each #"f_labquest_url_extract (2)"([Пользовательский])),
    #"Развернутый элемент Пользовательский.1" = Table.ExpandTableColumn(#"Добавлен пользовательский объект6", "Пользовательский.1", {"Column1"}, {"Пользовательский.1.Column1"}),
    #"Добавлен пользовательский объект7" = Table.AddColumn(#"Развернутый элемент Пользовательский.1", "Пользовательский.1", each if [Пользовательский.1.Column1]=null then [Пользовательский] else "www.labquest.ru"&[Пользовательский.1.Column1]),
    #"---" = Table.RemoveColumns(#"Добавлен пользовательский объект7",{"Пользовательский", "Пользовательский.1.Column1"}),
    #"Добавлен пользовательский объект1" = Table.AddColumn(#"---", "Пользовательский", each "/"),
    #"Объединенные столбцы" = Table.CombineColumns(#"Добавлен пользовательский объект1",{"Пользовательский.1", "Пользовательский"},Combiner.CombineTextByDelimiter("", QuoteStyle.None),"Сведено"),
    #"Список URL" = Table.ReplaceValue(#"Объединенные столбцы","//","/",Replacer.ReplaceText,{"Сведено"})
in
    #"Список URL"

Функция сбора списка URL:
Код
(Ссылка)=>
let
    Источник = try Table.FromColumns({Lines.FromBinary(Web.Contents(Ссылка))})otherwise "none",
    #"Строки с примененным фильтром" = Table.SelectRows(Источник, each Text.Contains([Column1], "tests-item-top")),
    #"Извлеченный текст между разделителями" = Table.TransformColumns(#"Строки с примененным фильтром", {{"Column1", each Text.BetweenDelimiters(_, "href=""", """ role")}})
in
    #"Извлеченный текст между разделителями"

Проблема в том, что на сервере стоит защита от DDOS-аттак и, как я понял, она меня банит. Я не совсем понимаю механизм её работы и не знаю, как разбаниться, чтобы пробовать тестировать разные функции в попытках обхода защиты.

Мне интересны любые варианты решения данной задачи (разбитие запроса на несколько, введение задержки выполнения функции, макросы и тд.)
PQ. Парсинг табличных данных с сайта
 
Исполнитель найден.  
PQ. Парсинг табличных данных с сайта
 
Цитата
написал:
Могу сделать без PQ (на макросах, в виде надстройки для Excel, - кнопку нажали, и получили таблицу нужного вам вида со всеми данными)
Контакты в профиле
Пока данная функция мне интересна только как элемент большой модели данных, действующей внутри PQ. Если я не найду, как реализовать, обращусь к вам, спасибо.  
PQ. Парсинг табличных данных с сайта
 
Добрый день.

Следующая функция, будучи применена к списку URL, парсит лишь те данные, что размещены на странице до кнопки "Далее":
Код
(Ссылка)=>
let
    //Источник = Web.BrowserContents("https://kdl.ru/analizy-i-tseny/allergeni-immunocap"),
    Источник = try Web.BrowserContents(Ссылка)otherwise null,
    #"Извлеченная таблица из HTML" = Html.Table(Источник, {{"Column1", ".h-card__code"}, {"Column2", "H3"}, {"Column3", ".h-card__category"}, {"Column4", "._duration .h-card__title"}, {"Column5", "._duration .h-card__content"}, {"Column6", "._price .h-card__title"}, {"Column7", ".nowrap"}}, [RowSelector=".h-card"]),
    #"Измененный тип" = Table.TransformColumnTypes(#"Извлеченная таблица из HTML",{{"Column1", type text}, {"Column2", type text}, {"Column3", type text}, {"Column4", type text}, {"Column5", type text}, {"Column6", type text}, {"Column7", Currency.Type}}),
    #"Другие удаленные столбцы" = Table.SelectColumns(#"Измененный тип",{"Column2", "Column7"}),
    #"Измененный тип1" = Table.TransformColumnTypes(#"Другие удаленные столбцы",{{"Column7", Int64.Type}})
in
    #"Измененный тип1"
Необходимо изменить её так, чтоб парсились и те данные, что расположены после кнопки.

Список URL:
Код
let
    Источник = Table.FromColumns({Lines.FromBinary(Web.Contents("https://kdl.ru/analizy-i-tseny/msk"))}),
    #"Строки с примененным фильтром" = Table.SelectRows(Источник, each Text.Contains([Column1], "href=""analizy-i-tseny/")),
    #"Извлеченный текст между разделителями" = Table.TransformColumns(#"Строки с примененным фильтром", {{"Column1", each Text.BetweenDelimiters(_, "#(tab)#(tab)#(tab)<a href=""", """"), type text}}),
    #"Добавлен пользовательский объект" = Table.AddColumn(#"Извлеченный текст между разделителями", "Пользовательский", each "https://kdl.ru/"),
    #"Объединенные столбцы" = Table.CombineColumns(#"Добавлен пользовательский объект",{"Пользовательский", "Column1"},Combiner.CombineTextByDelimiter("", QuoteStyle.None),"Сведено")
in
    #"Объединенные столбцы"
PQ. Прасинг информации со скрытых элементов страницы
 
Цитата
написал:
kush.near,

Только что проверил. Web.Contents + Text.FromBinary - возвращают интересующую вас информацию.
Вы в заголовке запроса cookie передаете? Текст формата "\u041d\u043e\u0432\u043e\u0435 \u0432" декодировали?
Ничего из этого не делал, так как с такой необходимостью сталкиваюсь, увы, впервые. Могу я вас попросить показать, как это выглядит в виде кода?

Адрес ссылки поменялся: Ссылка
PQ. Прасинг информации со скрытых элементов страницы
 
Цитата
написал:
kush.near,

посмотрел содержимое через "DevTools".
Интересующие вас данные изначально присутствуют, и после нажатия кнопки "Далее" выводятся на экран.
В таком случае с помощью какой функции получить доступ к этим данным, если, при обращении к указанной ссылке, что Web.Contents, что Web.BrowserContents видят только те 5 строк, стоящие до этой кнопки?
PQ. Прасинг информации со скрытых элементов страницы
 
Добрый день.

Еще один особенный случай, не могу разобраться: ссылка

Есть ли способ с помощью PQ получить доступ к данным, содержащимся под кнопкой "Далее"?

Удобоваримого вида ссылки не отображаются с помощью F12->Network->XHR. Может есть другой способ получения таких ссылок?
Приведение к единому формату текстовых значений содержащих буквы разных алфавитов
 
Цитата
написал:
kush.near,
Местные гуру создали
Можно, пожалуйста, ссылку на тему? Пока не совсем понимаю, что я могу сделать с данным файлом.
Приведение к единому формату текстовых значений содержащих буквы разных алфавитов
 
Добрый день.

Существует ли в Power Query инструмент или способ, позволяющий нивелировать разночтения, в случае использования в текстовых значениях одинаково выглядящих букв разных алфавитов?

Например, если в слове "Anti" по небрежности оператора используется кириллическая "А", в слове "сера" латинская "c" и тд.
PQ: Ошибка SSL/TLS
 
Цитата
написал:
let  wc         = Web.Page ( Web.Contents ( " https://mc-elamed.ru/ceny/ " ) ),  filter     = Table.SelectRows ( wc, each ( [Source] = "Table" ) ),  combine    = Table.Combine ( filter[Data] ),  priceToNum = Table.TransformColumns ( combine, { { "Цена", ( x ) => try Number.From ( x ) otherwise x, type any } } )in  priceToNum
Не сработало, выдает ошибку: DataFormat.Error: Не удается получить ресурс по адресу "https://mc-elamed.ru/ceny" с помощью Web.Page, так как он, скорее всего, не является веб-страницей.

Решил другим способом. Странно, но у моего коллеги грузится без проблем. Я попросил его скинуть мне текстом код, грузящий первую таблицу и через расширенный редактор все сработало:
Код
let
    Источник = Web.BrowserContents("https://mc-elamed.ru/ceny/"),
    #"Извлеченная таблица из HTML" = Html.Table(Источник, {{"Column1", "DIV.col-12.text-center > DIV.col-12.element-animate.fadeInUp.element-animated:nth-child(1) > DIV.services-table-wrap > DIV.col-12.element-animate.fadeInUp.element-animated:nth-child(1) > DIV.services-table-wrap > TABLE.services-table.table.table-striped.table-hover > * > TR > :nth-child(1)"}, {"Column2", "DIV.col-12.text-center > DIV.col-12.element-animate.fadeInUp.element-animated:nth-child(1) > DIV.services-table-wrap > DIV.col-12.element-animate.fadeInUp.element-animated:nth-child(1) > DIV.services-table-wrap > TABLE.services-table.table.table-striped.table-hover > * > TR > :nth-child(2)"}}, [RowSelector="DIV.col-12.text-center > DIV.col-12.element-animate.fadeInUp.element-animated:nth-child(1) > DIV.services-table-wrap > DIV.col-12.element-animate.fadeInUp.element-animated:nth-child(1) > DIV.services-table-wrap > TABLE.services-table.table.table-striped.table-hover > * > TR"]),
    #"Повышенные заголовки" = Table.PromoteHeaders(#"Извлеченная таблица из HTML", [PromoteAllScalars=true]),
    #"Измененный тип" = Table.TransformColumnTypes(#"Повышенные заголовки",{{"Наименование услуги", type text}, {"Цена", Int64.Type}})
in
    #"Измененный тип"

Через меню-создать источник не работает.

UPD. Непонятно пока правда, как остальные таблицы подгрузить.

UPD2. Web.BrowserContents работает, Web.Contents - нет.
Изменено: kush.near - 10.03.2023 15:34:51
Страницы: 1 2 3 След.
Наверх