利用matlab爬虫获取歌曲信息

本文介绍了如何使用matlab爬虫获取网易云音乐歌单中的歌曲信息,包括歌曲名称、链接、时长、歌手、专辑、专辑链接和专辑封面。在爬取过程中,遇到一级源代码无法获取信息的问题,通过审查元素找到二级源代码并将其保存到文本文件。还分享了正则表达式的应用技巧以及如何处理matlab中正则表达式的限制。最后,提供了处理字符串连接、去除重复元素和特殊字符替换的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题分析

我和一个朋友平时都很喜欢听歌。朋友的电脑上有很多他下载的mp3文件,但是他的这些mp3文件由于年代久远,其中很多都丢失了歌手、专辑、封面等信息,所以朋友想把这些歌的信息都整理起来。我们利用爬虫就可以解决这个问题。
一开始我们打算用先获取这些mp3文件的文件名,再在百度上搜索这些歌的信息,再用爬虫获取这些信息。然而这个办法遇到了困难,第一是无法获得百度搜索所得到的网页的链接,第二是就算获得了链接,从这个网页的源代码中也不一定能获得这首歌的信息。
于是我通过浏览各个音乐网站,发现网易云音乐的网站是可以进行爬虫,并且最适合爬虫的。只要将这些歌都添加到一个歌单中,我们就可以通过爬虫获得这些歌的很多信息。
我将我想到的这个办法告诉了朋友,朋友将他的歌全部添加到了一个歌单中,我们就可以开始爬虫了。
在这里插入图片描述

结果展示

在这里插入图片描述
获取到的歌曲信息分为7列,分别为"歌曲名称",“歌曲链接”,“时长”,“歌手”,“专辑”,“专辑链接”,“专辑封面”。
我们没有设置歌手链接,是因为每首歌的歌手可能有好几个,歌手链接设置起来很麻烦。

遇到的新问题和解决方法

1.我们从一级源代码中是看不到这些信息的,于是我们使用“审查元素”,查找这些信息的源代码的位置。
在这里插入图片描述
可以看出这些歌的信息都处在“tbody”这一层中,所以我们将这一层的内容全部复制下来,粘贴到记事本中,命名为"b.txt"。
因为我不知道怎么获取网页中的二级源代码,所以只能用这个比较low的方法来获取代码了。
这也是我从这次爬虫中所学到的新方法,以后可以用这个方法进行更广泛的爬虫了。

2.正则表达式中问号的妙用。
只需要一个小小的问号(?)就可以让正则表达式尽量匹配到较少的字符。
比如:
name=regexpi(b,’< title="[\s\S]{1,}?">’,‘match’);
就可以让正则匹配在遇到第一个”>后就停止。

3.matlab的正则表达式无法识别问号。
所以本来是这样的代码:
albumid=regexpi(b,‘a href="/https/blog.csdn.net/album?id=[\s\S]{1,15}"’,‘match’);
只能写成这样了:
albumid=regexpi(b,‘a href="/https/blog.csdn.net/album[\s\S]{1,15}"’,‘match’);

4.字符串连接:
先初始化一个字符串数组:
albumid2=strings(1,size(album,2));
再将这个数组与其他字符串连接:
for i=1:size(album,2)
albumid2(i)=“https://music.163.com/#/album?id=”+albumid(i);
end

5.去掉数组中的重复元素(不改变数组原来的顺序)
j=1;
for i=1:size(songid,2)
if(any(songid2==songid(i))==0)
songid2(j)=songid(i);
j=j+1;
end
end

6.常见替换:
&nbsp替换成空格,&quot替换成双引号。
name=strrep(name,’ ‘,’ ‘);
name=strrep(name,’"’,’"’);

源代码

a=importdata('b.txt');
b=convertCharsToStrings(a);

name=regexpi(b,'<b title="[\s\S]{1,}?">','match');
name=strrep(name,'<b title="','');
name=strrep(name,'">','');
name=strrep(name,'&nbsp;',' ')
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值