基于爬虫的数据分析--Python3抓取网易云音乐原理及实践

本文介绍了如何使用Python3爬取网易云音乐的歌曲,通过建立工程文件夹、编写main函数,利用requests等库实现歌曲信息获取与下载。程序设计包括两个类,用于存储音乐信息,通过搜索API获取歌曲并下载,同时提供了错误处理以增强程序稳定性。文章强调了在数据分析项目中编写清晰报错信息的重要性。
摘要由CSDN通过智能技术生成

#本文使用Python 3实现,笔者于Python 3.6,Python 3.7平台调试可运行。

#由于爬虫技术特殊性,最后一次调试:Nov.27,2018时仍然可用。

#IDE上,我更偏向于Anaconda。conda的数据分析与科学计算能力比较强、自带许多数学库(方便解析爬来的数据)。conda套件里有一个叫Spyder的软件。本期文章使用它实现。

网易云音乐是一款由网易开发的音乐产品,试想这样一种情况:老师/上司给我布置一份任务,为明天的迎新晚会做准备。需要把节目清单上的歌曲下载下来,交给负责此方面的同事。我们该怎样做呢?对照歌单一个一个在搜索框里搜索-下载?不,这看起来效率并不高。

如果有一个程序,能够实现基于给出播放列表的音乐批量下载。取缔现有的人工单个搜索,提高搜索精度。应该会有不少的效率提升。

 

#根据监管规定,本项目仅用于测试与学习用途。请勿用作商业用途。请在合法范围内使用。

#根据监管规定,本项目仅用于测试与学习用途。请勿用作商业用途。请在合法范围内使用。

#根据监管规定,本项目仅用于测试与学习用途。请勿用作商业用途。请在合法范围内使用。

 

首先,我们先看一下思路:

爬取网易云这件事你得建一个工程文件夹把所有需要的东西都放在这里面,那既然是工程。就不可避免的有一个main函数。据说许多初涉Python DA的同学不喜欢写main?

本实现基于requests, sys, click, re, base64, binascii, json, os, Crypto.Cipher, http库。

这些库不需要百分百理解,但最好有个8,9成的基础。实践出真知

hash库后来发现用不到就删掉了。

 

整个程序整体的框架,在一些疑难点加了注释方便理解。

 

main:

建立两个类,存放NeteaseMusic的信息和Song的信息(包含歌曲ID,歌曲URL等)。

 参考Jack Cherish的算法,使用quiet定位最优结果。

class Netease():
#
	def __init__(self, timeout, folder, quiet, cookie_path):
		self.finder = finder(timeout, cookie_path)
		self.folder = '.' if folder is None else folder
		self.quiet = quiet

建立一个文件夹放下载好的歌曲
下载的歌曲列表写在一个music_list文本文件中,并保存为文本文档。


只读方式打开这个文档
       调用map根据按行读入的文本(忽略换行等无效字符)生成一个list,传给download_song_by_search函数。

              download_song_by_search函数根据字符串查询是否有这首歌

def get_song_url(self, song_id, bit_rate=320000):
#这里加入了320K优先
	url = 'http://music.163.com/weapi/song/enhance/player/url?csrf_token='
	csrf = ''
	params = {'ids': [song_id], 'br': bit_rate, 'csrf_token': csrf}
	result = self.post_request(url, params)
	# 歌曲下载地址
	song_url = result['data'][0]['url']
 	# 歌曲不存在
	if song_u
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值