Как использовать MatLab для считывания текста с этого сайта для анализа музыкальных предпочтений - PullRequest
0 голосов
/ 03 декабря 2018

Итак, в Нидерландах ежегодно проводится радиопередача под названием «Top2000», где люди могут голосовать за своих любимых исполнителей и песни.Я думал, что было бы здорово проанализировать предпочтения музыки и артиста.Для этого мне нужно зачитать исполнителей / песни в списках для голосования, которые мне поделились по URL, например, this one.Я уже пробовал webread, urlread и wget для загрузки веб-страницы следующим образом:

url = 'https://stem.nporadio2.nl/top2000/share/c93732c2f20c266970eba7447931f25d865407ea'
Data1 = webread(url);
Data2 = urlread(url);
command = ['wget --no-check-certificate --page-requisites ' url];
system( command );

Но все, что они когда-либо выводили, это HTML-элементы без какого-либо упоминания об исполнителях или песнях, которые четко отображаются при переходе по указанному URL,У кого-нибудь есть идея или подсказка о том, как извлечь эту информацию с этого сайта?Заранее спасибо!Примечание: я не спрашиваю, как убрать элементы HTML.Однако, по-видимому, фактической информации, которую я ищу, просто нет, используя методы, описанные выше.

1 Ответ

0 голосов
/ 03 декабря 2018

Не глядя должным образом на ваш сайт, я подозреваю, что нужные элементы загружаются динамически (например, с помощью JavaScript).Поскольку JavaScript не будет работать во время вашего WGET и т. Д., Поэтому вы не можете их видеть, поскольку все, что нужно, это захватить HTML-код веб-сайта.

Я знаю, что это проблема Matlab, но я настоятельно рекомендую Selenium на Python, чтобы решить вашу проблему.С Selenium программа может подождать, пока веб-страница полностью загрузится, а затем выбрать нужные элементы.Это очень просто, вы можете проверить этот учебник .

Если вы предпочитаете не использовать Python, вы можете найти фактический URL-адрес, используемый Javascript вашего сайта, чтобы получить список исполнителей / песен(Я быстро взглянул на сайт, и художники, похоже, загружены main.js).Я нашел эту строку в main.js, которая намекает на то, что функция загружает список здесь:

h = null !== n ? n : {
                    _id: "0",
                    _source: {
                        id: 0,
                        artist: s,
                        title: l,
                        image: d.freeChoiceImage
                    }
                };

Отсюда вам нужно отследить, откуда загружены s и l, что в конечном итогепривести вас к правильному URL базы данных.Как видите, это становится все более сложным, тогда как с Selenium вы можете решить свою проблему с помощью всего лишь нескольких строк кода.

...