本篇文章给大家带来的内容是关于超简单的Python爬虫之网易云音乐的下载,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

目标

偶然的一次机会听到了房东的猫的《云烟成雨》,瞬间迷上了这慵懒的嗓音和学生气的歌词,然后一直去循环听她们的歌。然后还特意去刷了动漫《我是江小白》,好期待第二季...我多想在见你,哪怕匆匆一眼就别离...

好了,不说废话了。这次的目标主要是根据网易云中歌手的ID,下载该歌手的热门音乐的歌词和音频,并保存到本地的文件夹中。

配置基础Python

Selenium(配置方法参照:Selenium配置)

Chrome浏览器(其它的也可以,需要进行相应的修改)

分析

如果爬取过网易云的网站的小伙伴都应该知道网易云是有反爬取机制的,POST时需要对一些信息的参数进行加密函数的模拟。但是这里为了简便,小白也能理解。直接使用了Selenium来模拟登录,然后使用接口来直接下载音乐和歌词。

实验步骤:根据歌手ID获取该歌手的热门歌曲列表,歌曲名称和链接,并保存到csv文件中;

读取csv文件,根据歌曲链接,提取歌曲ID,然后利用相应的接口,下载音乐和歌词;

将音乐和歌词保存到本地。

1535514719847345.png

Python实现

该部分将对几个关键的函数进行介绍...

获取歌手信息

利用Selenium我们就不需要看对网页的请求了,直接可以从网页源码中提取相应的信息。查看歌手页面源码可以发现,我们需要的信息在iframe框架内,所以我们先需要切换到iframe:browser.switch_to.frame('contentFrame')

继续往下看,发现我们需要的歌曲名字和链接是在id="hotsong-list"的标签中,然后每一行对应的是一个tr标签。所以先获取所有的tr内容,然后遍历单个tr。data = browser.find_element_by_id("hotsong-list").find_elements_by_tag_name("tr")

注意:前一个是find_element,后一个是find_elements,后者返回一个列表。

接下来就是解析单个tr标签的内容,获取歌曲名字和链接,可以发现两者在class="txt"标签中,而且链接是href属性,名字是title属性,可以直接通过get_attribute()函数获取。

1535514740609171.pngfor i in range(len(data)):

content = data[i].find_element_by_class_name("txt")

href = content.find_element_by_tag_name("a").get_attribute("href")

title = content.find_element_by_tag_name("b").get_attribute("title")

song_info.append((title, href))

下载歌词

网易云有个获取歌词的接口,链接为:http://music.163.com/api/song...

链接中的数字就是歌曲的id,所以我们拥有歌曲id后,可以直接从该链接下载歌词,歌词文件是json格式,所以我们需要用到json包。

1535514758940666.png

而且直接获取的歌词中,每行有一个时间轴,需要用正则表达式来剔除,完整代码如下:def get_lyric(self):

url = 'http://music.163.com/api/song/lyric?' + 'id=' + str(self.song_id) + '&lv=1&kv=1&tv=-1'

r = requests.get(url)

json_obj = r.text

j = json.loads(json_obj)

lyric = j['lrc']['lyric']

# 利用正则表达式去除时间轴

regex = re.compile(r'\[.*\]')

final_lyric = re.sub(regex, '', lyric)

return final_lyric

下载音频

网易云也提供了音频文件的接口,链接为:http://music.163.com/song/med...

链接中的数字为歌曲的id,可以直接根据歌曲的id来下载音频文件。完整代码如下:def get_mp3(self):

url = 'http://music.163.com/song/media/outer/url?id=' + str(self.song_id)+'.mp3'

try:

print("正在下载:{0}".format(self.song_name))

urllib.request.urlretrieve(url, '{0}/{1}.mp3'.format(self.path, self.song_name))

print("Finish...")

except:

print("Fail...")

相关推荐:

以上就是超简单的Python爬虫之网易云音乐的下载的详细内容,更多请关注php中文网其它相关文章!

article_wechat2021.jpg?1111

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

爬虫python代码网易云_超简单的Python爬虫之网易云音乐的下载相关推荐

  1. 用python实现视频换脸_超简单使用Python换脸实例

    换脸! 这段时间,deepfakes搞得火热,比方说把<射雕英雄传>里的朱茵换成了杨幂,看下面的图!毫无违和感! 其实早在之前,基于AI换脸的技术就得到了应用,比方说<速度与激情7& ...

  2. python视频换脸例子_超简单使用Python换脸实例

    换脸! 这段时间,deepfakes搞得火热,比方说把<射雕英雄传>里的朱茵换成了杨幂,看下面的图!毫无违和感! 其实早在之前,基于AI换脸的技术就得到了应用,比方说<速度与激情7& ...

  3. python http服务器_超简单的Python HTTP服务

    超如果你急需一个简单的Web Server,但你又不想去下载并安装那些复杂的HTTP服务程序,比如:Apache,ISS等.那么, Python 可能帮助你.使用Python可以完成一个简单的内建 H ...

  4. python 添加半透明水印_超简单Python安全批量加水印教程!

    工作的时候,尤其是自媒体,我们必备水印添加工具以保护我们的知识产权 ,网上有许多的在线/下载的水印添加工具,但他们或多或少都存在以下问题:在线工具需要将图片上传到对方服务器,信息不安全. 很多工具不具 ...

  5. python打造excel神器_超简单:用Python让Excel飞起来

    前言 如何获取学习资源 章Python快速上手 1.1为什么要学习用Python控制Excel 1.2Python编程环境的搭建 1.2.1安装Python官方的编程环境IDLE 1.2.2安装与配置 ...

  6. python 打印皮卡丘_来简单聊聊python的装饰器呀~

    原文链接 来简单聊聊python的装饰器呀~​mp.weixin.qq.com 导语 之前很多小伙伴留言给我说看别人写的代码经常会感觉云里雾里的,完全看不懂,其实那些代码无非就是用了些python语法 ...

  7. python刷微博转发_一个简单的python刷新浪微博粉丝小程序

    代码简陋没有什么技术,还有个txt的配置文件才可以用.但是配置文件不发出来了.只要你自己好好看代码很容易猜得到.希望大家不要拿去刷了.因为实在是没意思. 代码中需要用到的相关python模块方法有: ...

  8. 一行python代码画粑粑_有趣的一行Python代码

    常言道:人生苦短,我用python.简单收集了几个有趣的只有一行的Python代码. 1.画出你的爱心 print('\n'.join([''.join([('Love'[(x-y)%4]if((x* ...

  9. python入侵数据库数据库_一个简单的Python访问Mysql数据库例子

    2020/11/3操作记录 搭建好Python的数据环境之后,接下来就是在Python代码中访问数据库我先在Navicat图形化界面创建一个数据库命名为pythontest,再在数据库中创建了一个表s ...

  10. python关键字中文意思_中英文简单介绍Python关键字 -- Python Key Words

    直奔主题,理解Python关键字有利于正确理解Python中的命令,对于系统掌握Python语法有着十分重要的作用. 1, False : Boolean Value as no 2, True : ...

最新文章

  1. 关于数据中台的深度思考与总结(超级干货)
  2. MySQL 优化上来就分库分表?面试官:根本不懂底层原理!
  3. 初始化栈的代码_数据结构中的栈,你知道多少?
  4. mysql搜索标题及时间_mysql搜索标题,描述和多行标记
  5. 案例:Redis 问题汇总和相关解决方案
  6. mysql blob 好处_MySQL中的BLOB类型
  7. 非中国服务器的时区问题
  8. ps cs3怎样能保存html,ps cs3用消失点清理杂物方法介绍
  9. 数学篇--初中数学知识
  10. 懒人分析jQuery源码
  11. 微信小程序实战之登录页面制作
  12. Python3爬虫新手实践及代码、经验分享
  13. 戴尔windows10桌面计算机,戴尔电脑win10怎么在桌面显示我得电脑
  14. Package XXX is not configured yet
  15. 腾讯逆地址解析php,腾讯地图逆地址解析,通过经纬度获取详细的信息数据
  16. TN-C-S系统介绍
  17. 隐马尔科夫模型java实现
  18. python语音合成并播放_语音合成篇
  19. 微信小程序项目-电子木鱼
  20. 【魔店】拼多多店铺一般在哪里找货源?

热门文章

  1. Oozie 集成 Ssh
  2. 摄像头网络安全如何保障
  3. 编辑实测:迅捷PDF转换器怎么将PDF转换成JPG
  4. 软考-中级-网络工程师-2021年下半年-上午真题整理
  5. python可视化网页设计_python可视化工具
  6. python可视化地图
  7. JDK安装环境变量配置以及java命令可用但javac命令不可用解决方案
  8. 模仿莫烦的PyCharm主题
  9. python shell清屏指令_python shell怎么清屏
  10. python3清屏命令_python3.4中清屏的处理方法