基于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中用fork()函数生成的子进程
May 04 Python
Python3读取zip文件信息的方法
May 22 Python
Python魔法方法详解
Feb 13 Python
Python集中化管理平台Ansible介绍与YAML简介
Jun 12 Python
Python使用sklearn实现的各种回归算法示例
Jul 04 Python
python中matplotlib条件背景颜色的实现
Sep 02 Python
Python使用jupyter notebook查看ipynb文件过程解析
Jun 02 Python
python抢购软件/插件/脚本附完整源码
Mar 04 Python
PyQt5 QThread倒计时功能的实现代码
Apr 02 Python
解决Pytorch中关于model.eval的问题
May 22 Python
总结Python连接CS2000的详细步骤
Jun 23 Python
Python实现学生管理系统(面向对象版)
Jun 24 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 已经成熟
2006/12/04 PHP
解析php中的escape函数
2013/06/29 PHP
PHP 无限级分类
2017/05/04 PHP
javascript之对系统的toFixed()方法的修正
2007/05/08 Javascript
JQuery CSS样式控制 学习笔记
2009/07/23 Javascript
纯JS实现旋转图片3D展示效果
2015/04/12 Javascript
深入理解JavaScript中的对象
2015/06/04 Javascript
Javascript之Number对象介绍
2016/06/07 Javascript
jQuey将序列化对象在前台显示地实现代码(方法总结)
2016/12/13 Javascript
详解如何用typescript开发koa2的二三事
2018/11/13 Javascript
浅谈JS的原型和继承
2019/05/08 Javascript
通过jQuery学习js类型判断的技巧
2019/05/27 jQuery
vue 点击其他区域关闭自定义div操作
2020/07/17 Javascript
[07:39]第一届亚洲邀请赛回顾视频
2017/02/14 DOTA
python字符串连接方式汇总
2014/08/21 Python
Python爬取读者并制作成PDF
2015/03/10 Python
python网络编程调用recv函数完整接收数据的三种方法
2017/03/31 Python
Python 对象中的数据类型
2017/05/13 Python
彻底理解Python中的yield关键字
2019/04/01 Python
Django 路由控制的实现
2019/07/17 Python
Python 图像对比度增强的几种方法(小结)
2019/09/25 Python
termux中matplotlib无法显示中文问题的解决方法
2021/01/11 Python
加热夹克:RAVEAN
2018/10/19 全球购物
九州传奇上机题
2014/07/10 面试题
护士见习期自我鉴定
2014/02/08 职场文书
公司员工检讨书
2014/02/08 职场文书
2014两会学习心得:榜样精神伴我行
2014/03/17 职场文书
《桥》教学反思
2014/04/09 职场文书
新法人代表任命书
2014/06/06 职场文书
计算机科学技术自荐信
2014/06/12 职场文书
质量在我心中演讲稿
2014/09/02 职场文书
2014年艾滋病防治工作总结
2014/12/10 职场文书
留学推荐信英文范文
2015/03/26 职场文书
2015年幼儿园安全工作总结
2015/05/12 职场文书
Mybatis-plus在项目中的简单应用
2021/07/01 Java/Android
使用Python通过企业微信应用给企业成员发消息
2022/04/18 Python