温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何利用Python爬虫爬取网站音乐

发布时间:2021-09-15 17:36:14 来源:亿速云 阅读:397 作者:小新 栏目:编程语言

小编给大家分享一下如何利用Python爬虫爬取网站音乐,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

具体实现

1.引入发送网络请求的第三方库

import requests # 发送网络请求的第三方库

安装方法

pip install requests

2.引入数据解析第三方库

from lxml import etree # 数据解析第三方库

安装方法

pip install lxml

3.某易云音乐网站列表url为'https://music.163.com/#/discover/toplist?id=3778678'

url = 'https://music.163.com/#/discover/toplist?id=3778678'

4.发送请求获取页面数据

response = requests.get(urlurl=url) # 请求页面数据

5.解析数据

html=etree.HTML(response.text) # 解析页面数据

6.获取所有歌曲标签集合( a标签 )

id_list = html.xpath('//a[contains(@href,"song?")]')  # 所有歌曲id集合

7.下载歌曲

base_url = 'http://music.163.com/song/media/outer/url?id=' # 下载音乐网址前缀  # 下载音乐url = 网址前缀 + 音乐id  for data in id_list:      href = data.xpath('./@href')[0]      music_id = href.split('=')[1] # 音乐id      music_url = base_url + music_id # 下载音乐url      music_name = data.xpath('./text()')[0] # 下载音乐名称      music = requests.get(url = music_url)      # 将下载的音乐以文件形式保存下来      with open('./music/%s.mp3' % music_name, 'wb') as file:           file.write(music.content)           print('<%s>下载成功' % music_name)

遇到的坑

以上的方法我是从一个视频里学到的,那个视频是半年前出的,可能当时这种方法还好使,但是今天我在用这种方法下载音乐文件的时候突然就报错了。

首先,编辑器报错找不到 music_name 和 music_id ,我仔细一看,获取的id_list集合里(也就是标签集合里)的id根本不是id,是代码,估计在这里音乐网站也做了相应的反扒机制。

其次,我自己在网站里找到了一首音乐获取了它的id并把id赋值给music_id,结果当用外链下载音乐时报错460,显示网络拥挤,估计下载音乐的网址也不好使了。

base_url = 'http://music.163.com/song/media/outer/url?id='  music_id = '1804320463.mp3'  music_url = base_url + music_id  music = requests.get(url=music_url)  print(music.text)

{"msg":"网络太拥挤,请稍候再试!","code":-460,"message":"网络太拥挤,请稍候再试!"}

最后,我打印出music_url,点击进去,还是可以听歌和下载的,不知道这是为什么了

base_url = 'http://music.163.com/song/media/outer/url?id='  music_id = '1804320463.mp3'  music_url = base_url + music_id  # music = requests.get(url=music_url)  print(music_url)

以上是“如何利用Python爬虫爬取网站音乐”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI