如何使用MatLab从该特定网站中读取文本以分析音乐偏好

时间:2018-12-02 23:12:17

标签: matlab web extract wget

因此,荷兰每年都会举办一次名为“ Top2000”的广播活动,人们可以在其中投票选出自己喜欢的艺术家和歌曲。我认为分析音乐和艺术家的偏好会很酷。为此,我需要读出每个URL与我共享的投票列表中的艺术家/歌曲,例如this。我已经尝试过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 :(得分:0)

在没有正确浏览您的网站的情况下,我怀疑您想要的元素是动态加载的(例如通过JavaScript)。由于JavaScript不会在WGET等过程中运行,所以这就是为什么您看不到它们的原因,因为这样做只是抓住了网站的HTML。

我知道这是Matlab问题,但我强烈建议在Python上使用Selenium来解决您的问题。使用Selenium,程序可以等到网页完全加载后,再获取所需的正确元素。非常简单,您可以查看此tutorial

如果您不想使用Python,则可以找到网站的Javascript用来获取Artists / Songs列表的实际URL(我快速浏览了一下网站,并且艺术家似乎已经加载了{{1} }。我在main.js中发现了这一行,暗示该函数正在此处加载列表:

main.js

从这里开始,您需要跟踪h = null !== n ? n : { _id: "0", _source: { id: 0, artist: s, title: l, image: d.freeChoiceImage } }; s的加载位置,最终将引导您进入正确的数据库URL。如您所见,这开始变得越来越复杂,而使用Selenium,您只需几行代码就可以解决您的问题。