基于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 的 Socket 编程
Mar 24 Python
简单介绍Python中的decode()方法的使用
May 18 Python
Python制作词云的方法
Jan 03 Python
Python读取英文文件并记录每个单词出现次数后降序输出示例
Jun 28 Python
浅谈Python中的全局锁(GIL)问题
Jan 11 Python
浅谈Python中函数的定义及其调用方法
Jul 19 Python
Django如何将URL映射到视图
Jul 29 Python
Python对接 xray 和微信实现自动告警
Sep 17 Python
解决Jupyter notebook中.py与.ipynb文件的import问题
Apr 21 Python
python高级特性简介
Aug 13 Python
python判断变量是否为列表的方法
Sep 17 Python
Python requests库参数提交的注意事项总结
Mar 29 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 生成N个不重复的随机数
2015/01/21 PHP
Cygwin中安装PHP方法步骤
2015/07/04 PHP
php创建多级目录与级联删除文件的方法示例
2019/09/12 PHP
JavaScript函数、方法、对象代码
2008/10/29 Javascript
js左侧多级菜单动态的解决方案
2010/02/01 Javascript
jquery的ajax请求全面了解
2013/03/20 Javascript
js点击选择文本的方法
2015/02/09 Javascript
JQuery中使文本框获得焦点的方法实例分析
2015/02/28 Javascript
JavaScript面向对象的实现方法小结
2015/04/14 Javascript
用js编写的简单的计算器代码程序
2015/08/04 Javascript
JS实现超精简响应鼠标显示二级菜单代码
2015/09/12 Javascript
NodeJS创建基础应用并应用模板引擎
2016/04/12 NodeJs
plupload+artdialog实现多平台上传文件
2016/07/19 Javascript
thinkjs之页面跳转同步异步操作
2017/02/05 Javascript
JavaScript函数节流和函数防抖之间的区别
2017/02/15 Javascript
JS得到当前时间的方法示例
2017/03/24 Javascript
angular.js指令中transclude选项及ng-transclude指令详解
2017/05/24 Javascript
vue-router传递参数的几种方式实例详解
2018/11/13 Javascript
微信小程序自定义组件传值 页面和组件相互传数据操作示例
2019/05/05 Javascript
webpack4之如何编写loader的方法步骤
2019/06/06 Javascript
python操作摄像头截图实现远程监控的例子
2014/03/25 Python
详解Python中的__new__()方法的使用
2015/04/09 Python
详解Django中Request对象的相关用法
2015/07/17 Python
Python使用mongodb保存爬取豆瓣电影的数据过程解析
2019/08/14 Python
python 队列基本定义与使用方法【初始化、赋值、判断等】
2019/10/24 Python
python3.7通过thrift操作hbase的示例代码
2020/01/14 Python
关于HTML5的22个初级技巧(图文教程)
2012/06/21 HTML / CSS
英国男士时尚网站:Dandy Fellow
2018/02/09 全球购物
材料会计岗位职责
2014/03/06 职场文书
中学优秀班主任事迹材料
2014/05/01 职场文书
歌颂祖国的演讲稿
2014/05/04 职场文书
音乐教师个人工作总结
2015/02/06 职场文书
保姆聘用合同
2015/09/21 职场文书
2016年母亲节寄语
2015/12/04 职场文书
python实现自定义日志的具体方法
2021/05/28 Python
一起来学习Python的元组和列表
2022/03/13 Python