基于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通过websocket与js客户端通信示例分析
Jun 25 Python
Python中请使用isinstance()判断变量类型
Aug 25 Python
Python实现向服务器请求压缩数据及解压缩数据的方法示例
Jun 09 Python
在Python中使用AOP实现Redis缓存示例
Jul 11 Python
python求最大连续子数组的和
Jul 07 Python
python设计tcp数据包协议类的例子
Jul 23 Python
Pycharm小白级简单使用教程
Jan 08 Python
详解基于Jupyter notebooks采用sklearn库实现多元回归方程编程
Mar 25 Python
如何用 Python 处理不平衡数据集
Jan 04 Python
详解pycharm的python包opencv(cv2)无代码提示问题的解决
Jan 29 Python
Django模型层实现多表关系创建和多表操作
Jul 21 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
PHP连接操作access数据库实例
2015/03/30 PHP
PHP中include/require/include_once/require_once使用心得
2016/08/28 PHP
php插入mysql数据返回id的方法
2018/05/31 PHP
PHP与Perl之间知识点区别整理
2019/03/19 PHP
Javascript实现的分页函数
2007/02/07 Javascript
提高网站信任度的技巧
2008/10/17 Javascript
Jquery Ajax.ashx 高效分页实现代码
2009/10/20 Javascript
JS中confirm,alert,prompt函数使用区别分析
2010/04/01 Javascript
JSON语法五大要素图文介绍
2012/12/04 Javascript
checkbox使用示例
2013/08/23 Javascript
Javascript核心读书有感之语句
2015/02/11 Javascript
javascript通过获取html标签属性class实现多选项卡的方法
2015/07/27 Javascript
js简单实现图片延迟加载的方法
2016/07/19 Javascript
js仿QQ邮箱收件人选择与搜索功能
2017/02/10 Javascript
vue 实现左右拖拽元素并且不超过他的父元素的宽度
2018/11/30 Javascript
Vue 中 a标签上href无法跳转的解决方式
2019/11/12 Javascript
Vuejs中的watch实例详解(监听者)
2020/01/05 Javascript
小程序实现点击tab切换左右滑动
2020/11/16 Javascript
利用node.js开发cli的完整步骤
2020/12/29 Javascript
[02:38]DOTA2亚洲邀请赛小组赛精彩集锦:Wings完美团击溃对手
2017/03/29 DOTA
让python json encode datetime类型
2010/12/28 Python
Python抓取聚划算商品分析页面获取商品信息并以XML格式保存到本地
2018/02/23 Python
python基于paramiko将文件上传到服务器代码实现
2019/07/08 Python
python爬取”顶点小说网“《纯阳剑尊》的示例代码
2020/10/16 Python
CSS3对图片照片进行边缘模糊处理的实现
2018/08/08 HTML / CSS
Happy Socks英国官网:购买五颜六色的袜子
2020/11/03 全球购物
物业经理求职自我评价
2013/09/22 职场文书
学年末自我鉴定
2014/01/21 职场文书
小学毕业典礼演讲稿
2014/09/09 职场文书
导游词300字
2015/02/13 职场文书
2015年安全教育月活动总结
2015/03/26 职场文书
财务出纳岗位职责
2015/03/31 职场文书
2015小学五年级班主任工作总结
2015/05/21 职场文书
买卖合同纠纷代理词
2015/05/25 职场文书
《植树问题》教学反思
2016/03/03 职场文书
聊聊配置 Nginx 访问与错误日志的问题
2022/05/25 Servers