基于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中import学习备忘笔记
Jan 24 Python
Python实现去除列表中重复元素的方法小结【4种方法】
Apr 27 Python
Python使用Pickle库实现读写序列操作示例
Jun 15 Python
Python中函数参数匹配模型详解
Jun 09 Python
Python创建或生成列表的操作方法
Jun 19 Python
TensorFlow获取加载模型中的全部张量名称代码
Feb 11 Python
Python 多线程C段扫描、检测 Ping扫描脚本的实现
Sep 03 Python
PyCharm最新激活码PyCharm2020.2.3有效
Nov 18 Python
pycharm实现猜数游戏
Dec 07 Python
django如何自定义manage.py管理命令
Apr 27 Python
Python入门之基础语法详解
May 11 Python
pytorch实现ResNet结构的实例代码
May 17 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
Zend Framework页面缓存实例
2014/06/25 PHP
php根据数据id自动生成编号的实现方法
2016/10/16 PHP
javascript 窗口加载蒙板 内嵌网页内容
2010/11/19 Javascript
jQuery.extend 函数的详细用法
2012/06/27 Javascript
将input file的选择的文件清空的两种解决方案
2013/10/21 Javascript
JS获取下拉列表所选中的TEXT和Value的实现代码
2014/01/11 Javascript
JavaScript中匿名函数用法实例
2015/03/23 Javascript
详解参数传递四种形式
2015/07/21 Javascript
高性能JavaScript循环语句和条件语句
2016/01/20 Javascript
Java框架SSH结合Easyui控件实现省市县三级联动示例解析
2016/06/12 Javascript
jQuery 判断是否包含在数组中Array[]的方法
2016/08/03 Javascript
Angular.js中$resource高大上的数据交互详解
2017/07/30 Javascript
ES6学习教程之Map的常用方法总结
2017/08/03 Javascript
jquery使用FormData实现异步上传文件
2018/10/25 jQuery
layui数据表格跨行自动合并的例子
2019/09/02 Javascript
浅析webpack-bundle-analyzer在vue-cli3中的使用
2019/10/23 Javascript
微信小程序如何实现点击图片放大功能
2020/01/21 Javascript
JavaScript常用工具函数大全
2020/05/06 Javascript
使用Python中的cookielib模拟登录网站
2015/04/09 Python
Python中使用haystack实现django全文检索搜索引擎功能
2017/08/26 Python
Python基于socket实现简单的即时通讯功能示例
2018/01/16 Python
对pyqt5之menu和action的使用详解
2019/06/20 Python
python3.6、opencv安装环境搭建过程(图文教程)
2019/11/05 Python
Python实现清理微信僵尸粉功能示例【基于itchat模块】
2020/05/29 Python
Keras loss函数剖析
2020/07/06 Python
python excel和yaml文件的读取封装
2021/01/12 Python
财务管理专业自荐信范文
2013/12/24 职场文书
毕业设计计划书
2014/01/09 职场文书
就业表自我评价分享
2014/02/06 职场文书
金融专业求职信
2014/08/05 职场文书
破坏寝室公物检讨书
2014/11/17 职场文书
解除租房协议书
2014/12/03 职场文书
《正比例》教学反思
2016/02/23 职场文书
JavaWeb Servlet实现网页登录功能
2021/07/04 Java/Android
Python接口自动化之文件上传/下载接口详解
2022/04/05 Python
Android开发EditText禁止输入监听及InputFilter字符过滤
2022/06/10 Java/Android