Страницы: 1
RSS
Импорт из интернет с помощью Power Query
 
Доброго времени суток.  Есть сайт http://yaroslavsky.dzvr.ru/ в нём имеется "ОНЛАЙН ТАБЛО" в котором имеется информация об отправлении поездов, электричек с какого пути. Имеется код этого блока:


<iframe style="overflow: hidden; border: 0; -moz-box-shadow: 0 2px 3px rgba(0, 0, 0, 0.5); -webkit-box-shadow: 0 2px 3px rgba(0, 0, 0, 0.5); box-shadow: 0 2px 3px rgba(0, 0, 0, 0.5);" onload="this.height = (this.contentDocument || this.contentWindow.document).body.offsetHeight" src="http://cms.indigointeractive.ru/rasp/tableV3.php?terminalid=10&quot; width="500" height="1750" frameborder="0"></iframe>

В этом коде ссылка для импорта, через Power Query. Собственно нужно решить задачу с импортом не динамического диапазона, то есть при попадании на сайт http://yaroslavsky.dzvr.ru/ и далее, как писал выше "ОНЛАЙН ТАБЛО", то мы видаем, что HTTP не поменялся а всё тот же. Вытащил ссылку на импорт с помощью исповедовать элемент. Собственно вытащил вот эту ссылку: http://cms.indigointeractive.ru/rasp/tableV3.php?terminalid=10

Теперь пытаюсь вытащить таблицу с "ОНЛАЙН ТАБЛО"


PS Не самый лучший вариант открывать все таблицы, пробовал,но думаю. что есть способ грамотнее.
 
Доброе время суток.
Попробуйте такой вариант, правда работать будет только в Power BI Desktop, до Excel функция Html.Table пока не добралась. Исходное применение в рамках Web описано New Web Scraping experience in Power BI / Power Query (Using CSS Selectors)
Код
let
    Source = File.Contents("C:\Path\123.html"),
    htmlText = Text.FromBinary(Source, TextEncoding.Utf8),
    htmlTable = Html.Table(htmlText, {
        {"Name1", "div.scheduleName1"},
        {"Name2", "div.scheduleName2"},
        {"Time", "div.scheduleTime"},
        {"Type", "div.scheduleTrain > div.ico"},
        {"#", "div.scheduleTrain > div.text"},
        {"Where", "div.scheduleNum > div.ico"},
        {"Way", "div.scheduleNum > div.text"}
    },
    [RowSelector="div.schedule-itm*"])
in
    htmlTable

P. S. Насколько это будет работать полноценно, сказать не могу. Проблема в том, что вывод динамически формируется от нажатия кнопок.
 
Код
let
    Источник = Web.Page(Web.Contents("http://cms.indigointeractive.ru/rasp/tableV3.php?terminalid=10")),
    #"Развернутый элемент Data" = Table.ExpandTableColumn(Источник, "Data", {"Kind", "Name", "Children", "Text"}, {"Kind", "Name", "Children", "Text"}),
    #"Развернутый элемент Children" = Table.ExpandTableColumn(#"Развернутый элемент Data", "Children", {"Kind", "Name", "Children", "Text"}, {"Kind.1", "Name.1", "Children.1", "Text.1"}),
    #"Развернутый элемент Children.1" = Table.ExpandTableColumn(#"Развернутый элемент Children", "Children.1", {"Kind", "Name", "Children", "Text"}, {"Kind.2", "Name.2", "Children", "Text.2"}),
    #"Развернутый элемент Children1" = Table.ExpandTableColumn(#"Развернутый элемент Children.1", "Children", {"Kind", "Name", "Children", "Text"}, {"Kind.3", "Name.3", "Children.1", "Text.3"}),
    #"Развернутый элемент Children.2" = Table.ExpandTableColumn(#"Развернутый элемент Children1", "Children.1", {"Kind", "Name", "Children", "Text"}, {"Kind.4", "Name.4", "Children", "Text.4"}),
    #"Развернутый элемент Children2" = Table.ExpandTableColumn(#"Развернутый элемент Children.2", "Children", {"Kind", "Name", "Children", "Text"}, {"Kind.5", "Name.5", "Children.1", "Text.5"}),
    #"Развернутый элемент Children.3" = Table.ExpandTableColumn(#"Развернутый элемент Children2", "Children.1", {"Kind", "Name", "Children", "Text"}, {"Kind.6", "Name.6", "Children", "Text.6"}),
    #"Развернутый элемент Children3" = Table.ExpandTableColumn(#"Развернутый элемент Children.3", "Children", {"Kind", "Name", "Children", "Text"}, {"Kind.7", "Name.7", "Children.1", "Text.7"}),
    #"Развернутый элемент Children.4" = Table.ExpandTableColumn(#"Развернутый элемент Children3", "Children.1", {"Kind", "Name", "Children", "Text"}, {"Kind.8", "Name.8", "Children", "Text.8"}),
    #"Развернутый элемент Children4" = Table.ExpandTableColumn(#"Развернутый элемент Children.4", "Children", {"Kind", "Name", "Children", "Text"}, {"Kind.9", "Name.9", "Children.1", "Text.9"}),
    #"Удаленные столбцы" = Table.RemoveColumns(#"Развернутый элемент Children4",{"Text.6", "Text.5", "Text.4", "Text.3", "Text.2", "Text.1", "Text", "Caption", "Source", "ClassName", "Id", "Kind", "Name", "Kind.1", "Name.1", "Kind.2", "Name.2", "Kind.3", "Name.3", "Kind.4", "Name.4", "Kind.5", "Name.5", "Kind.6", "Name.6", "Kind.7", "Name.7", "Kind.8", "Name.8", "Kind.9", "Name.9", "Children.1"}),
    #"Удалены пустые строки" = Table.SelectRows(#"Удаленные столбцы", each not List.IsEmpty(List.RemoveMatchingItems(Record.FieldValues(_), {"", null}))),
    #"Удаленные нижние строки" = Table.RemoveLastN(#"Удалены пустые строки",175)
in
    #"Удаленные нижние строки"

Может мой способ не один из лучших, но Я пока учусь работать в PQ. Плохо, что нет учебников и Я черпаю знания, через ютуб ) В общем, в моём случае надо привести таблицу в пользовательский вид.
Изменено: Slava977 - 04.10.2018 15:14:52
 
Цитата
Slava977 написал:
Плохо, что нет учебников
Может не искали? Power Query books. Одна из лучших M Is for (Data) Monkey. В следующем году уже второе издание будет.
 
Впрочем, можно и из ваших мучений толк получить.
Скрытый текст

Успехов.
 
Андрей VG,спасибо Вам огромное. Возьму, как пример на вооружение. Да. Книгу скачал, осталось перевести на Русский ))
 
Вот еще кнопочный вариант, руками вообще ничего не писал:
Скрытый текст
Вот горшок пустой, он предмет простой...
 
PooHkrd,И Вам спасибо ))
 
Доброе утро! )) Вот Я вчера на это наодил, что не всегда можно попасть в источник даже исследуя код элемента или через исходный код страницы получить http для импорта в Excel, через Power Query. Тут уже наже надо быть программистом сайтов, что понимать кодировку и знать, где искать. Наверняка эти поля запросов ссылаются на другой источник базы данных. но где эта переходящая ссылка спрятана? Как раскодировать?  ))) Может, кто занимается сайтами, может подскажите? Наведёте на мысли?
Изменено: Slava977 - 05.10.2018 10:59:15
 
Вы бы хоть ссылку дали, и как-нибудь описали бы какие данные с этой страницы нужно вытянуть. Но по правилам форума, это уже отдельный вопрос, а значит отдельная тема.
Вот горшок пустой, он предмет простой...
 
PooHkrd,Прошу прощения ) http://textual.ru/gvr/ самое главное забыл. но ведь думал, чтоб ссылку вставить Это продолжения этой темы  Я же не буду создавать тему с этим же названием?
Изменено: Slava977 - 05.10.2018 11:50:28
 
Хорошо. можно тогда Я бы назвал тему "Импорт из не динамических таблиц (или как там правильно называется, когда ссылка не обновляется, но информация внутри таблицы меняется или списка) в Power Query"
 
По ссылке у вас некий поисковик, который требует ввода значений в конкретные поля. Честно говоря, не очень в курсе как при помощи PQ закидывать запрос на такую ссылку.
Вот горшок пустой, он предмет простой...
 
Цитата
PooHkrd написал:
при помощи PQ закидывать запрос на такую ссылку.
Да всё также, только запросную часть в Url нужно обработать с помощью Uri.EscapeDataString
Цитата
http://textual.ru/gvr/index.php?bo=0&wot=0&name=&num=&loc=%CC%EE%F1%EA%E2%E0&s=%CF%EE%E8%F1%EA
 
спс
Страницы: 1
Наверх