Сваляне на данни от много линкове в Интернет

В предишната статия показах как могат да се свалят данни от интернет с помощта на Power Query. Сега ще видим как можем наведнъж да свалим данни от много еднотипни линкове.

Например интересуват ни всички текстове на песни на Васил Найденов. За целта ще използваме заявката от първата част, ще направим малко манипулации на М кода (нищо сложно, уверявам ви) и накрая ще заредим песните от всички линкове, които сме подготвили предварително в отделен списък.

Този номер е описан в книгата на Кен Пълс и Пабло Ескобар „M is for Data Monkey”  и е нагледно показан в това видео на Бил Джелен.

Когато и да ви попадне нещо за Ексел на тези тримата – задължително му отделете време. Заслужава си.

И така – да започваме.

Първата стъпка е да си отворим файла от предния път (можете да си го свалите от тук)

А втората ни работа е да направим копие на заявката, за да си имаме оригинала, ако объркаме нещо непоправимо. Парен каша духа. Просто кликаме с десния бутон върху името на заявката и избираме Duplicate.

За да не се бъркаме, хубаво е да изберем подходящо име за новата заявка. В случая съм я кръстил „Multiple links“, демек „Много линкове“.

Сега идва най-сложното, което хич не е сложно, така че не му се плашете. Отиваме на Home > Advanced Editor.

Излиза прозорецът с М кода на заявката, който изглежда така:

Нашата работа тук е:

  1. Да напишем над думата ‘let’ някаква кодова дума. Аз си избрах ‘Links’. След това ограждаме тази дума в скоби, а след скобите пишем => (равно и по-голямо)
  2. Да заменим маркирания текст барабар с кавичките с кодовата дума.

Накрая кодът трябва да изглежда така:

Когато кликнем на Done, изведнъж заявката придобива странен вид. Така трябва да е!

Обърнете внимание също така, че знакът пред името на заявката се е променил на fx. Това е знакът за функция в Power Query.

Повече за функциите в някоя следваща статия. За сега нека просто да й дадем някакво подходящо име. Аз съм използвал fxLinks, където fx подсказва, че става дума за функция. Трябва да запомним това име, защото след малко ще ни трябва.

Сега даваме Close&Load и отиваме в списъка с линковете, който предварително сме подготвили в Ексел. Уместно е да ударим едно CTRL+S, за да запаметим направените промени.

Кликаме в произволна клетка в таблицата с линковете и от Power Query таб избираме From Table.

След като списъкът с линковете се зареди като таблица в Power Query, добавяме колона – Add Column > Add Custom column.

В полето Custom column formula: записваме =fxLinks и отваряме скоба, след което с двоен клик избираме полето „Линкове“ от дясно. Крайният вид на формулата изглежда така:

Когато кликнете ОК ще се появи нещо, което не бива да ви притеснява.

Просто натиснете Continue, за да се появи този прозорец:

Тук натискаме Select и избираме Public, след което даваме Save.

Сега трябва да „разширим“ колоната Custom като кликнем върху бутона вдясно от името на колоната.

Тук можем да си изберем кои колони да ползваме. В случая искаме всичките. Лично аз предпочитам да махам отметката пред “Use original columnname as prefix”. Не че е нещо фатално, ако го оставите.

Вече сме почти готови. Колоната с линковете не ни трябва, затова можем да я махнем. Да припомня – най-лесният начин е с десен бутон върху нея и избираме Remove

Сега обърнете внимание как след всяко заглавие на песен стои думата „текст“.

Не изглежда красиво така и ще е по-добре да махнем и тази дума. Първата мисъл е да използваме Replace, но това не е добра идея, защото може да има заглавие, в което се съдържа думата „текст“.

Затова ще използваме Split Column > By Delimiter

Ще изберем Custom > „текст“ > At the right-most delimiter

С това казваме на Power Query да раздели колоната там, където срещне „текст“ и то в най-дясното место положение. На тези, които са запознати с Text-to-Columns в Ексел вероятно им направи впечатление, че в Power Query можем освен единични символи като точка, тире, интервал да използваме цяла дума за разделител!

Ето какво се получава, когато дадем ОК

Можем допълнително да обработим колоните – да им променим заглавията, да изчистим данните от излишни символи, чрез Trim, Clean, Replace. Но ще пропусна тези стъпки, които не са сложни за изпълнение. Когато докараме таблицата до вид, който ни удовлетворява – просто даваме Close&Load и … започва голямото чакане.

В зависимост от броя на линковете, бързината на интернет връзката и мощта на компютъра ви, зареждането на текстовете в Ексел може да отнеме от 1 до над 5-10 минути. Не особено приятно, но пък си струва.

Ето го и крайният резултат – заредили сме 1,172 реда с текстове на всички песни на Васил Найденов.

В случая съм филтрирал „Синева“. Една прекрасна песен, която всъщност е на Диана Експрес със солист Васил Найденов. Текстът е на големият ни поет Павел Матев.

И накрая няколко думи – каква е ползата от всичко това. Бих казал, че тази техника отваря изключителни възможности за всеки един анализатор. По този начин можете да свалите наведнъж данните за валутни курсове, статистически данни, цени от различни електронни магазини, резултатите от всички сезони на Шампионската Лига или мнения за хотели от сайтове като tripadvisor и booking.

А какво можем да направим с тях – в следващата част.

Статията е част от поредица за сваляне и анализ на данни от интернет, чрез Power Query. Ето и връзките към другите статии:

  1. Сваляне на данни от Интернет с Power Query
  2. Сваляне на данни от много линкове в Интернет
  3. Създаване на списък с линкове
  4. Анализ на текст чрез Ексел
  5. Word clouds в Excel
Публикувано в PowerExcel с етикети , , , . Постоянна връзка.