python音乐编程_python音乐下载,小白也可以写爬虫

使用python下载音乐,小白也可以写爬虫

**

简介:使用BeautifulSoup和request模块进行抓取和解析,

最后保存音乐(注:音乐质量是普通品质的)

在这里顺便给大家推荐一个资源很全的python学习免非解答.裙 :七衣衣九七七巴而五(数字的谐音)转换下可以找到了,这里有资深程序员分享以前学习心得,学习笔记,还有一线企业的工作经验,且给大家精心整理一份python零基础到项目实战的资料,每天给大家讲解python最新的技术,前景,学习需要留言的小细节

关于模块的安装,打开cmd输入

pip install bs4 //安装BeautifulSoup

pip install requests //安装requests

pip install fake_useragent //这个模块可以随机生成一个headers

(不能安装请升级pip或者以管理员模式打开cmd)

我们这里爬取的是网易云音乐

https://music.163.com/artist?id=4292 //爬取的链接

http://music.163.com/song/media/outer/url?id= //音乐播放外链链接

首先:我们先进行网页源码获取

https://music.163.com/#/artist?id=4292

最开始我们是直接来用这个链接来请求网页的,但是我们会发现返回的href元素是空的(#)。这个链接并不是真正的歌单链接。

但经寻找会发现source中有个不一样的网页链接

接下来我们会找到这个链接https://music.163.com/song?id=1407551413,看一眼是不是不太一样。和原链接就一个‘/#’之差,内容就不一样,这是网易云隐藏了源网页。

然后仔细查看就可以找到音乐id和名称

接下来就是代码实现了

import requests

from fake_useragent import UserAgent

from bs4 import BeautifulSoup

import time

def get_html():

url = 'https://music.163.com/artist?id=4292'

headers = {

'User-Agent': UserAgent().random #随机一个模仿浏览器请求头

}

response = requests.get(url, headers=headers)

res = BeautifulSoup(response.text, 'lxml')

id_lists = res.find(class_='f-hide').find_all('a')

return id_lists

def download(names,hrefs):

#获取音乐id后还要进行解析并保存

headers = {

'User-Agent': UserAgent().random

}

#这里还要再加个headers,不然会假数据

url = 'http://music.163.com/song/media/outer/url?id='

#网易云外链地址,通过这个可以免费下载

response = requests.get(url+hrefs,headers=headers).content

#返回二进制

f = open('E:\\music\\{}.mp3'.format(names),'wb') #这里下载的歌曲储存到E盘music文件夹

f.write(response)

print('正在下载{}'.format(names))

if __name__ == '__main__':

get_html()

for id_url in get_html():

names = id_url.text

hrefs = id_url['href'][9:]

#用变量来接收歌曲名和id

download(names,hrefs)

time.sleep(1) #睡眠一秒,防止过于频繁访问

如果你想下载其他歌曲可以把url中的链接换掉,注意把‘/#’删除以获取真正的链接。这个代码适用于歌单和专辑

最后顺便给大家推荐一个资源很全的python学习免非解答.裙 :七衣衣九七七巴而五(数字的谐音)转换下可以找到了,这里有资深程序员分享以前学习心得,学习笔记,还有一线企业的工作经验,且给大家精心整理一份python零基础到项目实战的资料,每天给大家讲解python最新的技术,前景,学习需要留言的小细节

本文的文字及图片来源于网络加上自己的想法,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值