Страницы: 1
RSS
Скачивание информации из нескольких веб-страниц, Помощь с запросом Power Query
 
Имеется сайт, который выводит информацию в виде однотипных таблиц/ Вот запрос на одну из таких страниц
 

let

   Источник = Web.Page(Web.Contents("xxxx ?year=2016-2017&sem=2&id=405")),

(Здесь xxxxx в ссылке на сайт - это я просто скрыл адрес сайта, year=  (изменяется 2016-2017, 2017-2018,2018-2019,2019-2020, всего 4 варианта)  sem= 1 или 2; id= тоже изменяется (причём не по порядку - т.е. написать  переменную типа a=[1..400] не получится, здесь нужен перечень  переменных, например, a=[200;230;400;405;470)

   Data0 = Источник{0}[Data],

   #"Повышенные заголовки" = Table.PromoteHeaders(Data0, [PromoteAllScalars=true]),

   #"Измененный тип" = Table.TransformColumnTypes(#"Повышенные заголовки",{{"Тип", type text}, {"Дисциплина", type text}, {"Преподаватель", type text}, {"Блок", type text}, {"Итоговый Процент", Int64.Type}, {"", type text}})

in

   #"Измененный тип"

Мне  нужно, чтобы кроме имеющихся столбцов таблицы, добавить дополнительно столбцы:  год, семестр, id - которые будут взяты из страницы сайта, с которой  скачана информация/ Каким образом можно осуществить данную операцию?

В языке программирования Power Query не разбираюсь совсем, поэтому поиск в различных интернет-справочниках не помог...
 
Приложите файл в котором есть все варианты параметров для формирования строки запроса к сайту, т.е. year/sem/id
Я правильно понял, что нужно в цикле перебрать все возможные сочетания этих параметров и собрать в одну таблицу все успешные обращения к сайту?
Вот горшок пустой, он предмет простой...
 
Да, нужно в одну таблицу собрать данные для всех семестров и учебных годов (т.е. они будут выглядеть как 2017-2018 и т.д.) для каждого студента, но в таблице должно быть видно. что это за семестр и какой студент, чтобы потом можно было проводить сортировку. id здесь не весь перечень - я не стал все 400 вариантов вставлять, но и здесь видно. что некоторые номера идут по порядку. а иногда случаются "скачки" почему-то (таблицу эту также прикрепил в формате excel)
yearsemid
2016-20171259
2017-20182260
2018-2019261
2019-2020262
409
410
411
487
Изменено: Jurcalas - 27.05.2020 13:59:50
 
Цитата
PooHkrd написал:
Приложите файл
Вас просят показать файл. Файл, а не описание того, что есть в файле.
 
Я уже внёс изменения в сообщение: прикрепил файл.
Изменено: Jurcalas - 27.05.2020 14:00:55
 
Как-то так:
Код
let
    fnGetData = (y,s,i)=> Table.PromoteHeaders( Web.Page(Web.Contents("http://edu.donnasa.ru/Ved/TotalVed.aspx?year=" & y & "&sem=" & s & "&id=" & i )){0}[Data] ),
    S = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    Decart = Table.Join( Table.Join( Table.SelectRows(S[[year]], each [year] <> null), {}, Table.SelectRows(S[[sem]], each [sem] <> null), {} ), {}, Table.SelectRows(S[[id]], each [id] <> null), {} ),
    Typed = Table.TransformColumnTypes(Decart,{{"year", type text}, {"sem", type text}, {"id", type text}}),
    AddedTabs = Table.AddColumn(Typed, "tabs", each fnGetData([year],[sem],[id])),
    Expanded = Table.ExpandTableColumn(AddedTabs, "tabs", {"Тип", "Дисциплина", "Преподаватель", "Блок", "Итоговый Процент", "Оценка По Рейтингу", "Оценка На Экзамене", "Итоговая Оценка", "Дата Пересдачи 1", "Пересдача 1", "Дата Пересдачи 2", "Пересдача 2", "Дата Пересдачи 3", "Пересдача 3"}, {"Тип", "Дисциплина", "Преподаватель", "Блок", "Итоговый Процент", "Оценка По Рейтингу", "Оценка На Экзамене", "Итоговая Оценка", "Дата Пересдачи 1", "Пересдача 1", "Дата Пересдачи 2", "Пересдача 2", "Дата Пересдачи 3", "Пересдача 3"})
in
    Expanded

Добавляйте список ID в нужный столбец, обновляйте таблицу и ждите. Качается не быстро. Но быстрее чем ручками.
Изменено: PooHkrd - 27.05.2020 14:51:28
Вот горшок пустой, он предмет простой...
 
Еще то же самое
 
Спасибо большое=)
 
PooHkrd, Михаил Л,Всё работает!!!!! Вы сэкономили мне очень много времени=)))))))))))
Надо будет, когда появится свободное время, выучить язык М, нужен редко,зато экономит много времени для больших данных=)
 
Цитата
Jurcalas написал:
выучить язык М, нужен редко
Я когда его не знал - тоже нужен был редко.
Как только немножко выучил - сразу начал каждый день пользоваться. :D
Лучше день потерять - потом за 5 минут долететь!
Вот горшок пустой, он предмет простой...
Страницы: 1
Наверх