基于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中用于去除空格的三个函数的使用小结
Apr 07 Python
python中随机函数random用法实例
Apr 30 Python
Python简明入门教程
Aug 04 Python
Python使用dis模块把Python反编译为字节码的用法详解
Jun 14 Python
Python分治法定义与应用实例详解
Jul 28 Python
python 按不同维度求和,最值,均值的实例
Jun 28 Python
Python实现获取系统临时目录及临时文件的方法示例
Jun 26 Python
Python 生成一个从0到n个数字的列表4种方法小结
Nov 28 Python
将自己的数据集制作成TFRecord格式教程
Feb 17 Python
Python实现捕获异常发生的文件和具体行数
Apr 25 Python
Python numpy大矩阵运算内存不足如何解决
Nov 19 Python
python字符串的一些常见实用操作
Apr 06 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中文验证码实现示例分享
2014/01/12 PHP
PHP常量使用的几个需要注意的地方(谨慎使用PHP中的常量)
2014/09/12 PHP
php使用递归计算文件夹大小
2014/12/24 PHP
php简单实现MVC
2015/02/05 PHP
PHP简单实现HTTP和HTTPS跨域共享session解决办法
2015/05/27 PHP
PHP实现RSA签名生成订单功能【支付宝示例】
2017/06/06 PHP
Laravel 5.5基于内置的Auth模块实现前后台登陆详解
2017/12/21 PHP
PHP 图片处理
2020/09/16 PHP
一个cssQuery对象 javascript脚本实现代码
2009/07/21 Javascript
增强用户体验友好性之jquery easyui window 窗口关闭时的提示
2012/06/22 Javascript
初步使用bootstrap快速创建页面
2016/03/03 Javascript
BootstrapTable与KnockoutJS相结合实现增删改查功能【二】
2016/05/10 Javascript
Angular.js 实现数字转换汉字实例代码
2016/07/14 Javascript
jQuery实现根据生日计算年龄 星座 生肖
2016/11/23 Javascript
Bootstrap实现圆角、圆形头像和响应式图片
2016/12/14 Javascript
常用JS图片滚动(无缝、平滑、上下左右滚动)代码大全(推荐)
2016/12/20 Javascript
详解利用 Express 托管静态文件的方法
2017/09/18 Javascript
Vue2 轮播图slide组件实例代码
2018/05/31 Javascript
微信小程序wx.navigateTo方法里的events参数使用详情及场景
2020/01/07 Javascript
python实现从web抓取文档的方法
2014/09/26 Python
简单讲解Python中的闭包
2015/08/11 Python
Python中实现最小二乘法思路及实现代码
2018/01/04 Python
Django 忘记管理员或忘记管理员密码 重设登录密码的方法
2018/05/30 Python
python引用(import)某个模块提示没找到对应模块的解决方法
2019/01/19 Python
python字符串和常用数据结构知识总结
2019/05/21 Python
django ManyToManyField多对多关系的实例详解
2019/08/09 Python
如何使用python进行pdf文件分割
2019/11/11 Python
Flask和pyecharts实现动态数据可视化
2020/02/26 Python
Eclipse配置python默认头过程图解
2020/04/26 Python
python实现简单的井字棋游戏(gui界面)
2021/01/22 Python
MATCHESFASHION.COM美国官网:英国奢侈品零售商
2018/10/29 全球购物
三八活动策划方案
2014/08/17 职场文书
机关中层领导干部群众路线教育实践活动个人对照检查材料
2014/09/24 职场文书
2014年营销工作总结
2014/11/22 职场文书
总结Python连接CS2000的详细步骤
2021/06/23 Python
Python echarts实现数据可视化实例详解
2022/03/03 Python