基于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的垃圾回收机制深入分析
Jul 16 Python
Pandas GroupBy对象 索引与迭代方法
Nov 16 Python
python 阶乘累加和的实例
Feb 01 Python
把JSON数据格式转换为Python的类对象方法详解(两种方法)
Jun 04 Python
Python 多个图同时在不同窗口显示的实现方法
Jul 07 Python
Django多进程滚动日志问题解决方案
Dec 17 Python
基于python调用psutil模块过程解析
Dec 20 Python
如何在django中实现分页功能
Apr 22 Python
Django Model中字段(field)的各种选项说明
May 19 Python
tensorflow下的图片标准化函数per_image_standardization用法
Jun 30 Python
Python通过fnmatch模块实现文件名匹配
Sep 30 Python
详解python日志输出使用配置文件格式
Feb 10 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
mac下使用brew配置环境的步骤分享
2011/05/23 PHP
php入门学习知识点七 PHP函数的基本应用
2011/07/14 PHP
PHP静态文件生成类实例
2014/11/29 PHP
ThinkPHP框架实现定时执行任务的两种方法分析
2018/09/04 PHP
Yii2.0框架实现带分页的多条件搜索功能示例
2019/02/20 PHP
你可能不再需要JQUERY
2021/03/09 Javascript
Aster vs Newbee BO5 第二场2.19
2021/03/10 DOTA
JavaScript 自动完成脚本整理(33个)
2009/10/20 Javascript
向大师们学习Javascript(视频与PPT)
2009/12/27 Javascript
utf-8编码引起js输出中文乱码的解决办法
2010/06/23 Javascript
基于jquery的图片幻灯展示源码
2012/07/15 Javascript
jQuery中实现动画效果的基本操作介绍
2013/04/16 Javascript
第七章之菜单按钮图标组件
2016/04/25 Javascript
JS把内容动态插入到DIV的实现方法
2016/07/19 Javascript
AngularJS基于ui-route实现深层路由的方法【路由嵌套】
2016/12/14 Javascript
浅谈Javascript中的Label语句
2016/12/14 Javascript
简单谈谈原生js的math对象
2017/06/27 Javascript
vuejs 制作背景淡入淡出切换动画的实例
2018/09/01 Javascript
使用Node.js在深度学习中做图片预处理的方法
2019/09/18 Javascript
Python中的上下文管理器和with语句的使用
2018/04/17 Python
基于python2.7实现图形密码生成器的实例代码
2019/11/05 Python
python 爬虫如何正确的使用cookie
2020/10/27 Python
借助HTML5 Canvas来绘制三角形和矩形等多边形的方法
2016/03/14 HTML / CSS
详解HTML5中的manifest缓存使用
2015/09/09 HTML / CSS
适合各种场合的美食礼品:Harry & David
2016/08/03 全球购物
文员个人求职自荐信
2013/09/21 职场文书
先进事迹报告会感言
2014/01/24 职场文书
《植物妈妈有办法》教学反思
2014/02/25 职场文书
模范班主任事迹材料
2014/12/17 职场文书
2015年环境整治工作总结
2015/05/22 职场文书
法律意见书范文
2015/06/04 职场文书
你知道哪几种MYSQL的连接查询
2021/06/03 MySQL
MySql 8.0及对应驱动包匹配的注意点说明
2021/06/23 MySQL
利用JavaScript写一个简单计算器
2021/11/27 Javascript
Python制作表白爱心合集
2022/01/22 Python
mysql数据库隔离级别详解
2022/06/16 MySQL