python爬取网易云音乐_python爬取网易云音乐

本文介绍了如何使用Python爬取网易云音乐,以许嵩的歌曲为例,通过分析网页源代码和利用lxml库的etree解析响应内容,提取所需元素。在爬取过程中注意URL的特殊字符以及解析页面为elements模式的重要性。
摘要由CSDN通过智能技术生成
滑稽研究所 45beb1c408e0aeb1cb3c9ca22bdd4fee.gif

python爬取网易云音乐

哈喽,大家好呀,我是滑稽君。本期我们在网易云爬取喜欢歌星的音乐。以我喜欢的许嵩为例。

5822705e7dba0b036e72030af03340ca.gif

视频讲解:

网页源代码:

654980cd8838aeb18a3f36c287b3b460.png

我们检测网页源代码,搜索发现并不能找到我们歌单里的内容。但是选择检查却可以找到页面元素,这意味着我们需要对页面进行一些小小的处理。怎么处理?我们的浏览器帮我们解析了页面的源代码,所以我们可以看到下图这种形式,在下面的页面中我们可以直接使用xpath来爬取我们想要的内容。

也就是说我们要把原始页面解析成下图红圈中的elements模式,而lxml库中的etree功能可以帮我们把response.text解析成element的形式,完成转换之后就可以使用你喜欢的方法来匹配你需要的元素。

b0a62be327f777017feb06d848d2f7d5.png

目标网址在复制时他会自动加上一个‘/#’,也算是一个小的爬手段,我们使用时记得把它去掉。分析完毕上代码。

eab1869df8248e5d62914d79c708cb8e.png

代码:

import requestsfrom lxml import etreeurl = "https://music.163.com/artist?id=5771"furl = "http://music.163.com/song/media/outer/url?id="response = requests.get(url=url)print(response)html = etree.HTML(response.text)url_list = html.xpath('//a[contains(@href,"/song?")]/@href')[:50]name_list = html.xpath('//a[contains(@href,"/song?")]/text()')[:50]print(url_list)print(name_list)for i in url_list:    xyy = furl + i.replace('/song?id=','')    print(xyy)    for h in name_list:        xyz = requests.get(url=xyy)        with open('./topmusic/%s.mp3' % h, 'wb') as file:            file.write(xyz.content)        print("下载成功" % h)

下载音乐的文件夹需要我们提前创建,下面我们来看看运行结果。点击文件可以播放,没有问题。

c49a17512ab3d2b9d396b7d79a8e1f70.png

228ecd2b0847747e56d0bae1820e546e.png

我之前尝试爬取网易云音乐时,总是返回一个空列表,原因就是没有使用lxml的etree功能解析页面转换成element格式,导致无法使用xpath匹配到我们想要的元素。不过在爬取QQ音乐时并未遇到这种问题。

e2ae2396f4822bc3f17baae498295e77.gif ❂ END

还有一些细节及易犯错的问题,请大家观看视频部分内容。

7d01436da2db5b5faf4b875b2b51cc26.png
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值