基于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抓取网页正文的源码
Jun 11 Python
TF-IDF与余弦相似性的应用(二) 找出相似文章
Dec 21 Python
Tornado 多进程实现分析详解
Jan 12 Python
python 实现敏感词过滤的方法
Jan 21 Python
python每5分钟从kafka中提取数据的例子
Dec 23 Python
Python单链表原理与实现方法详解
Feb 22 Python
python 爬虫 实现增量去重和定时爬取实例
Feb 28 Python
Python类的绑定方法和非绑定方法实例解析
Mar 04 Python
基于python计算并显示日间、星期客流高峰
May 07 Python
python怎么对数字进行过滤
Jul 05 Python
利用Python函数实现一个万历表完整示例
Jan 23 Python
Python用SSH连接到网络设备
Feb 18 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模板引擎SMARTY
2006/10/09 PHP
PHP浮点数的一个常见问题
2016/03/10 PHP
PHP7+Nginx的配置与安装教程详解
2016/05/10 PHP
对于Laravel 5.5核心架构的深入理解
2018/02/22 PHP
PHP远程连接oracle数据库操作实现方法图文详解
2019/04/11 PHP
javascript之dhDataGrid Ver2.0.0代码
2007/07/01 Javascript
Javascript日期对象的dateAdd与dateDiff方法
2008/11/18 Javascript
JavaScript几种形式的树结构菜单
2010/05/10 Javascript
用nodejs实现PHP的print_r函数代码
2014/03/14 NodeJs
JS实现控制表格行内容垂直对齐的方法
2015/03/30 Javascript
JS动态显示表格上下frame的方法
2015/03/31 Javascript
JS随机调用指定函数的方法
2015/07/01 Javascript
JavaScript截断字符串的方法
2015/07/15 Javascript
js判断手机访问或者PC的几个例子(常用于手机跳转)
2015/12/15 Javascript
Javascript 6里的4个新语法
2016/08/25 Javascript
js 转json格式的字符串为对象或数组(前后台)的方法
2016/11/02 Javascript
JS实现数组去重方法总结(六种方法)
2017/07/14 Javascript
官方推荐react-navigation的具体使用详解
2018/05/08 Javascript
jQuery Migrate 插件用法实例详解
2019/05/22 jQuery
简单实现节流函数和防抖函数过程解析
2019/10/08 Javascript
javascript实现时间日期的格式化的方法汇总
2020/08/06 Javascript
Python 'takes exactly 1 argument (2 given)' Python error
2016/12/13 Python
动态规划之矩阵连乘问题Python实现方法
2017/11/27 Python
Python类的继承和多态代码详解
2017/12/27 Python
对Python中range()函数和list的比较
2018/04/19 Python
python使用matplotlib库生成随机漫步图
2018/08/27 Python
Django中多种重定向方法使用详解
2019/07/17 Python
利用Python将图片中扭曲矩形的复原
2020/09/07 Python
CSS3田字格列表的样式编写方法
2018/11/22 HTML / CSS
在c#中using和new这两个关键字有什么意义
2013/05/19 面试题
日语专业毕业生求职信
2013/12/04 职场文书
林肯就职演讲稿
2014/05/19 职场文书
工作时间擅自离岗检讨书
2014/10/24 职场文书
大学生暑期社会实践的个人总结!
2019/07/17 职场文书
Maven学习----Maven安装与环境变量配置教程
2021/06/29 Java/Android
vue postcss-px2rem 自适应布局
2022/05/15 Vue.js