基于python实现的百度新歌榜、热歌榜下载器(附代码)


Posted in Python onAugust 05, 2019

前言

首先声明,本工具仅仅为学习之用,不涉及版权问题,因为百度音乐里面的歌曲本身是可以下载的,而且现在百度也提供了”百度音乐播放器”,可以通过这个工具进行批量下载。

我当时做这个工具的时候,百度还没有提供”百度音乐播放器”,而我又想批量下载,所以做了这样的一个下载工具。当然,主要还是为了学习。

工具采用Python2.7.3+PyQt开发。

功能:

1.集中展示百度新歌榜或热歌榜可下载的歌单。

2.支持单个、多个歌曲的下载。

3.可复制歌单中所有的链接内容,方便在迅雷等下载工具中创建下载组。

缺陷:

目前采用单线程,效率不高,UI界面容易假死。

本工具运行流程:

1.模拟用户登录百度。

2.若登录成功,采集并解析页面内容,加载歌单列表。

3.用户点击下载按钮或者批量下载按钮后,下载歌曲。

基于python实现的百度新歌榜、热歌榜下载器(附代码)

使用方法:

1.在配置文件setting.py的最后,配置可登录百度的账号和密码,及百度热歌榜或新歌榜的URL.

username = "your baidu acount"  #配置你的百度账号 
password = "your baidu password" #配置你的百度密码  
musiclistUrl = "http://music.baidu.com/top/dayhot" #  http://music.baidu.com/top/new

2.直接运行mainWindow.py文件即可,如果网速不给力的话可能要等上3、4分钟。

运行后如图:

基于python实现的百度新歌榜、热歌榜下载器(附代码)

用到的知识:

1.首先用到了PyQt的GUI编程,窗体布局及QTableWidget、QProgressBar、QPushButton等控件及控件的重写

2.用到了网络编程的部分内容,利用urllib,urllib2,cookielib请求网页,模拟登录百度。

3.利用HTMLParser解析网页内容,匹配网页元素。

4.利用codecs进行文件的读写。

遇到的问题:

1.编码问题,由于在创建文件时将文件编码设置为UTF-8,当需要向文件写入的内容为中文等非ASCII码内容时,总是提示编码问题。其实,百度音乐的网页全部为UTF-8格式,因此从网页中获取的内容也是UTF-8格式,但是,要讲内容写入UTF-8的文本中,必须将网页内容进行decode(“utf8”)解码为unicode格式,才能正常写入。

检测内容编码,可以用chardet模块的chardet.detect(“内容”)的方法。

另外,HTMLParser解析网页内容过程中,有的下载页面会出现问题,根据提示信息发现还是编码问题,将feed()方法中的内容参数进行decode(“utf8”)后,结果正常。

decode将内容根据参数内容解码为unicode类型,具体要根据所采集的页面的编码。

github下载地址:点这里

Python 相关文章推荐
python监控网站运行异常并发送邮件的方法
Mar 13 Python
python获取本机mac地址和ip地址的方法
Apr 29 Python
Python编程使用tkinter模块实现计算器软件完整代码示例
Nov 29 Python
Python中XlsxWriter模块简介与用法分析
Apr 24 Python
使用Python和Prometheus跟踪天气的使用方法
May 06 Python
linux下安装python3和对应的pip环境教程详解
Jul 01 Python
Python实现Restful API的例子
Aug 31 Python
学习python需要有编程基础吗
Jun 02 Python
Keras之自定义损失(loss)函数用法说明
Jun 10 Python
怎么快速自学python
Jun 22 Python
Python面向对象实现方法总结
Aug 12 Python
python 监控logcat关键字功能
Sep 04 Python
selenium2.0中常用的python函数汇总
Aug 05 #Python
Django中使用CORS实现跨域请求过程解析
Aug 05 #Python
Flask使用Pyecharts在单个页面展示多个图表的方法
Aug 05 #Python
PyQt5基本控件使用详解:单选按钮、复选框、下拉框
Aug 05 #Python
用django设置session过期时间的方法解析
Aug 05 #Python
基于python 微信小程序之获取已存在模板消息列表
Aug 05 #Python
Python中typing模块与类型注解的使用方法
Aug 05 #Python
You might like
解析php利用正则表达式解决采集内容排版的问题
2013/06/20 PHP
php使用qr生成二维码的示例分享
2014/01/20 PHP
thinkPHP框架中执行原生SQL语句的方法
2017/10/25 PHP
php实例化一个类的具体方法
2019/09/19 PHP
PHP中通过getopt解析GNU C风格命令行选项
2019/11/18 PHP
javascript multibox 全选
2009/03/22 Javascript
firefox插件Firebug的使用教程
2010/01/02 Javascript
利用腾讯的ip地址库做ip物理地址定位
2010/07/24 Javascript
根据邮箱的域名跳转到相应的登录页面的代码
2012/02/27 Javascript
jquery 动态创建元素的方式介绍及应用
2013/04/21 Javascript
浅析js设置控件的readonly与enabled属性问题
2013/12/25 Javascript
jquery拖动层效果插件用法实例分析(附demo源码)
2016/04/28 Javascript
基于vue+canvas的excel-like组件实例详解
2017/11/28 Javascript
Vue组件通信之Bus的具体使用
2017/12/28 Javascript
jQuery插件jsonview展示json数据
2018/05/26 jQuery
JS实现获取毫秒值及转换成年月日时分秒的方法
2018/08/15 Javascript
微信小程序签到功能
2018/10/31 Javascript
微信小程序实现判断是分享到群还是个人功能示例
2019/05/03 Javascript
vue项目中使用scss的方法步骤
2019/05/16 Javascript
ES6 Array常用扩展的应用实例分析
2019/06/26 Javascript
jquery选择器和属性对象的操作实例分析
2020/01/10 jQuery
Django 开发调试工具 Django-debug-toolbar使用详解
2019/07/23 Python
Python函数式编程实例详解
2020/01/17 Python
python实现简单的购物程序代码实例
2020/03/03 Python
windows、linux下打包Python3程序详细方法
2020/03/17 Python
通过Python扫描代码关键字并进行预警的实现方法
2020/05/24 Python
python入门:argparse浅析 nargs='+'作用
2020/07/12 Python
Python使用pycharm导入pymysql教程
2020/09/16 Python
Sneaker Studio捷克:购买运动鞋
2018/07/08 全球购物
澳大利亚最大的百货公司:Myer
2018/12/21 全球购物
莫斯科高科技在线商店:KremlinStore
2019/03/13 全球购物
大学生入党自我鉴定
2013/10/31 职场文书
科技工作者先进事迹
2014/08/16 职场文书
市委常委会班子党的群众路线教育实践活动整改方案
2014/10/25 职场文书
2015年全国科普日活动总结
2015/03/23 职场文书
保研专家推荐信范文
2015/03/25 职场文书