基于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将ip地址转换成整数的方法
Mar 17 Python
python简单实现基于SSL的IRC bot实例
Jun 15 Python
简述Python中的进程、线程、协程
Mar 18 Python
Python判断文件或文件夹是否存在的三种方法
Jul 27 Python
Python实现调度算法代码详解
Dec 01 Python
python3.x上post发送json数据
Mar 04 Python
Go/Python/Erlang编程语言对比分析及示例代码
Apr 23 Python
python爬虫获取小区经纬度以及结构化地址
Dec 30 Python
Flask框架中request、请求钩子、上下文用法分析
Jul 23 Python
Python3 Click模块的使用方法详解
Feb 12 Python
使用Python实现将多表分批次从数据库导出到Excel
May 15 Python
Python使用re模块验证危险字符
May 21 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
第1次亲密接触PHP5(2)
2006/10/09 PHP
PHP函数之error_reporting(E_ALL ^ E_NOTICE)详细说明
2011/07/01 PHP
php json_encode()函数返回json数据实例代码
2014/10/10 PHP
php格式化电话号码的方法
2015/04/24 PHP
PHP的运行机制与原理(底层)
2015/11/16 PHP
java解析json方法总结
2019/05/16 PHP
javascript拓展DOM操作 prependChild insertAfert
2010/11/17 Javascript
分享XmlHttpRequest调用Webservice的一点心得
2012/07/20 Javascript
一行代码实现纯数据json对象的深度克隆实现思路
2013/01/09 Javascript
zTree插件之多选下拉菜单实例代码
2013/11/06 Javascript
jQuery前端框架easyui使用Dialog时bug处理
2014/12/05 Javascript
javascript引用类型之时间Date和数组Array
2015/08/27 Javascript
jQuery formValidator表单验证
2016/01/07 Javascript
jQuery点击导航栏选中更换样式的实现代码
2017/01/23 Javascript
BootStrap 弹出层代码
2017/02/09 Javascript
原生javascript的ajax请求及后台PHP响应操作示例
2020/02/24 Javascript
Python生成不重复随机值的方法
2015/05/11 Python
Python中函数及默认参数的定义与调用操作实例分析
2017/07/25 Python
Python 装饰器使用详解
2017/07/29 Python
使用pytorch进行图像的顺序读取方法
2018/07/27 Python
Django csrf 验证问题的实现
2018/10/09 Python
用python3教你任意Html主内容提取功能
2018/11/05 Python
使用Python的networkx绘制精美网络图教程
2019/11/21 Python
Python timeit模块的使用实践
2020/01/13 Python
Django实现图片上传功能步骤解析
2020/04/22 Python
django models里数据表插入数据id自增操作
2020/07/15 Python
python 深度学习中的4种激活函数
2020/09/18 Python
HTML5打开手机扫码功能及优缺点
2017/11/27 HTML / CSS
全球速卖通俄罗斯站:AliExpress俄罗斯
2019/06/17 全球购物
LVMH旗下最大的奢侈品网站平台:24S
2020/05/24 全球购物
《会走路的树》教后反思
2014/04/19 职场文书
机械操作工岗位职责
2014/08/08 职场文书
2014年图书馆工作总结
2014/11/25 职场文书
学前教育见习总结
2015/06/23 职场文书
解除合同协议书范本
2016/03/21 职场文书
Idea连接MySQL数据库出现中文乱码的问题
2021/04/14 MySQL