基于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 19 Python
Python3实现连接SQLite数据库的方法
Aug 23 Python
Python编写屏幕截图程序方法
Feb 18 Python
pip install urllib2不能安装的解决方法
Jun 12 Python
Python设计模式之建造者模式实例详解
Jan 17 Python
python验证身份证信息实例代码
May 06 Python
Python的numpy库下的几个小函数的用法(小结)
Jul 12 Python
python实现通过队列完成进程间的多任务功能示例
Oct 28 Python
Python3将ipa包中的文件按大小排序
Apr 17 Python
opencv 阈值分割的具体使用
Jul 08 Python
Python实现手绘图效果实例分享
Jul 22 Python
Python入门之基础语法详解
May 11 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
从C/C++迁移到PHP——判断字符类型的函数
2006/10/09 PHP
三个类概括PHP的五种设计模式
2012/09/05 PHP
Netbeans 8.2将支持PHP7 更精彩
2016/06/13 PHP
jquery+thinkphp实现跨域抓取数据的方法
2016/10/15 PHP
javascript的函数
2007/01/31 Javascript
用javascript实现的激活输入框后隐藏初始内容
2007/06/29 Javascript
JS中Iframe之间传值及子页面与父页面应用
2013/03/11 Javascript
Javascript中的匿名函数与封装介绍
2015/03/15 Javascript
JS实现控制图片显示大小的方法【图片等比例缩放功能】
2017/02/18 Javascript
Angular在一个页面中使用两个ng-app的方法
2017/02/20 Javascript
Vue.js 的移动端组件库mint-ui实现无限滚动加载更多的方法
2017/12/23 Javascript
JavaScript常见JSON操作实例分析
2018/08/08 Javascript
详解javascript 变量提升(Hoisting)
2019/03/12 Javascript
layer.alert自定义关闭回调事件的方法
2019/09/27 Javascript
js 动态校验开始结束时间的实现代码
2020/05/25 Javascript
js 图片懒加载的实现
2020/10/21 Javascript
Python实例之wxpython中Frame使用方法
2014/06/09 Python
python实现爬虫统计学校BBS男女比例之数据处理(三)
2015/12/31 Python
利用Python实现kNN算法的代码
2019/08/16 Python
Django admin.py 在修改/添加表单界面显示额外字段的方法
2019/08/22 Python
JupyterNotebook设置Python环境的方法步骤
2019/12/03 Python
Python如何通过Flask-Mail发送电子邮件
2020/01/29 Python
Python3 filecmp模块测试比较文件原理解析
2020/03/23 Python
python爬取股票最新数据并用excel绘制树状图的示例
2021/03/01 Python
css3的动画特效之动画序列(animation)
2017/12/22 HTML / CSS
具有防紫外线功能的高性能钓鱼服装:Hook&Tackle
2018/08/16 全球购物
幼师自荐信
2013/10/26 职场文书
语文教育专业应届生求职信
2013/11/23 职场文书
编辑找工作求职信范文
2013/12/16 职场文书
职称评定自我鉴定
2014/03/18 职场文书
旅游管理毕业生自荐信范文
2014/03/19 职场文书
检查机关党的群众路线个人整改措施
2014/10/04 职场文书
捐款通知怎么写
2015/04/24 职场文书
联谊会开场白
2015/06/01 职场文书
欠条样本
2015/07/03 职场文书
pandas提升计算效率的一些方法汇总
2021/05/30 Python