基于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实现的防DDoS脚本
Feb 08 Python
python实现在字符串中查找子字符串的方法
Jul 11 Python
python分析作业提交情况
Nov 22 Python
Tensorflow之构建自己的图片数据集TFrecords的方法
Feb 07 Python
浅谈python中对于json写入txt文件的编码问题
Jun 07 Python
把pandas转换int型为str型的方法
Jan 29 Python
使用matplotlib中scatter方法画散点图
Mar 19 Python
python3.6下Numpy库下载与安装图文教程
Apr 02 Python
Python如何使用k-means方法将列表中相似的句子归类
Aug 08 Python
PyCharm导入python项目并配置虚拟环境的教程详解
Oct 13 Python
Python爬虫如何破解JS加密的Cookie
Nov 19 Python
python 下载文件的几种方法汇总
Jan 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直接修改表内容DataGrid功能实现代码
2015/09/24 PHP
PHP中的数组处理函数实例总结
2016/01/09 PHP
php+ajax实现带进度条的上传图片功能【附demo源码下载】
2016/09/14 PHP
PHP实现的最大正向匹配算法示例
2017/12/19 PHP
php中青蛙跳台阶的问题解决方法
2018/10/14 PHP
jquery随机展示头像代码
2011/12/21 Javascript
jquery ajax请求方式与提示用户正在处理请稍等
2014/09/01 Javascript
jquery实现右键菜单插件
2015/03/29 Javascript
在HTML中插入JavaScript代码的示例
2015/06/03 Javascript
javascript表单正则应用
2017/02/04 Javascript
jQuery实现按比例缩放图片的方法
2017/04/29 jQuery
通过JS运行机制的角度说说作用域
2019/03/12 Javascript
详解nodejs http请求相关总结
2019/03/31 NodeJs
Vue组件实现触底判断
2019/06/26 Javascript
深入浅析vue中cross-env的使用
2019/09/12 Javascript
ligerUI的ligerDialog关闭刷新的方法
2019/09/27 Javascript
JavaScript实时更新当前的时间的示例代码
2020/07/15 Javascript
Vue前端判断数据对象是否为空的实例
2020/09/02 Javascript
uniapp实现可以左右滑动导航栏
2020/10/21 Javascript
nuxt.js写项目时增加错误提示页面操作
2020/11/05 Javascript
python生成随机验证码(中文验证码)示例
2014/04/03 Python
Python正则表达式经典入门教程
2017/05/22 Python
用python脚本24小时刷浏览器的访问量方法
2018/12/07 Python
在python tkinter界面中添加按钮的实例
2020/03/04 Python
PyCharm+Pipenv虚拟环境开发和依赖管理的教程详解
2020/04/16 Python
Css3新特性应用之形状总结
2016/12/08 HTML / CSS
html5是什么_动力节点Java学院整理
2017/07/07 HTML / CSS
JOSEPH官网:英国奢侈时尚品牌
2018/01/31 全球购物
购买中国最好的电子产品:Geekbuying
2018/03/13 全球购物
墨西哥巴士车票在线购买:ClickBus
2018/03/27 全球购物
怎样创建、运行java程序
2014/08/01 面试题
Unix/Linux开发面试题
2016/08/16 面试题
户外拓展活动方案
2014/02/11 职场文书
党的群众路线教育实践活动组织生活会发言材料
2014/10/17 职场文书
2015年读书月活动总结
2015/03/26 职场文书
2016年第二十届“母亲节暨幸福工程救助贫困母亲活动日”活动总结
2016/04/06 职场文书