帮助中心

   

热门搜索: 免费续期  推广  永久会员

代理IP爬虫教程:获取网易云音乐歌手歌词

利用代理IP进行爬虫,我们能够开展很多不同的项目,帮助爬取到所需要的信息。下面迅联代理给大家分享一个使用爬虫获得网易云音乐歌手歌词的方法,通过这样操作我们可以很方便将资源获取到本地。

 

项目环境

 

语言:Python

工具:Pycharm

 

导包

 

requests:根据 url 获取页面源码。

BeautifulSoup:解析提取源码。

 

程序结构:

程序由六部分组成:

 

get_html():提取页面源码

get_top50():提取歌手的歌曲信息。

get_lyrics():提取歌曲的歌词。

save2txt():把歌词保存为 txt 文件。

main:主函数。

 

解析页面:

这个是爬虫第一步了,注意下代理IP 的设置,防止自己的 IP被封,如果爬虫数据量大的话,建议在主函数中加入等待时间,这样也不会给爬取目标的服务器增加压力,就会减少被封的风险了。

 

 

这个函数的作用是返回热门歌曲页面的源码文件,之前也写过一篇文章,不过用的是 selenium 库,selenium 库爬取比较慢,这次换一种思路,用requests 库请求。 url 是根据上篇文章获取的 id 拼接起来的,但是页面这个 url 是个假的 url ,用假的 url 提取不了页面源码。后来查了下网易云音乐的 api,发现真实的 url 没有 #,去掉这个多余的 # 加上对应歌手 id 即可,这个 url 我放在主函数了。

获取歌手的歌曲信息

通过 get_html(url) 函数提取的源码提取出包含歌曲名称和歌曲 id,这个选择器标签藏得很深,我是把 soup 先打印出来,找出第一首歌的位置,往前查找标签,分析出选择器为 .f-hide #song-list-pre-cache a,再对提取的元素进行处理,去除不需要的信息,保留有效信息并以 zip 形式一一对应返回。

 

 

获取歌词

通过上个函数获取的歌曲 id 获取对应的歌词,这个地方如果直接用页面上的 url 也获取不到内容,也只能通过他们提供的 api 链接拼接上歌曲 id 即可。解析后用 json.loads() 解码 python json 格式,提取歌词信息,然后用 re.sub() 来实现字符串替换处理的功能,处理掉前面我们不需要的元素。

 

 

保存数据

直接用歌名作为名称保存为纯文本文件,如果要保存在特定目录,需要自己提前新建好此目录。

 

 

执行 main 函数

最后执行 main 函数,输入需要爬取歌手 id,运行,每获取一首歌歌词时设置了一个等待时间,这也是为了防止 ip 被封的一种小策略。

 

 

好了,以后想看哪位歌手的热门歌曲的歌词的话找到 他们 的 id,运行此文的代码,就能下载歌词了。以后去看演唱会,再也不用愁因忘记歌词而不能和歌手一起嗨歌了。

关闭
0797-8539189
关注微信公众号,免费送2小时时长