基于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 executemany的使用及注意事项
Mar 13 Python
python实现简单点对点(p2p)聊天
Sep 13 Python
python网络爬虫学习笔记(1)
Apr 09 Python
cProfile Python性能分析工具使用详解
Jul 22 Python
Python检查图片是否损坏及图片类型是否正确过程详解
Sep 30 Python
Python切图九宫格的实现方法
Oct 10 Python
python打印直角三角形与等腰三角形实例代码
Oct 20 Python
python通过移动端访问查看电脑界面
Jan 06 Python
使用PyCharm官方中文语言包汉化PyCharm
Nov 18 Python
Python爬虫入门案例之爬取二手房源数据
Oct 16 Python
代码复现python目标检测yolo3详解预测
May 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 array操作10个小技巧分享
2011/06/23 PHP
php打印一个边长为N的实心和空心菱型的方法
2015/03/02 PHP
Codeigniter校验ip地址的方法
2015/03/21 PHP
PHP SPL标准库之SplFixedArray使用实例
2015/05/12 PHP
繁简字转换功能
2006/07/19 Javascript
javascript事件模型代码
2007/07/01 Javascript
元素的内联事件处理函数的特殊作用域在各浏览器中存在差异
2011/01/12 Javascript
单击复制文字兼容各浏览器的完美解决方案
2013/07/04 Javascript
JS中实现replaceAll的方法(实例代码)
2013/11/12 Javascript
javascript中的括号()用法小结
2014/04/14 Javascript
JQuery获取表格数据示例代码
2014/05/26 Javascript
利用jQuery和CSS将背景图片拉伸
2015/10/16 Javascript
JS获取url参数、主域名的方法实例分析
2016/08/03 Javascript
javascript加载xml 并解析各节点的值(实现方法)
2016/10/12 Javascript
微信小程序template模板实例详解
2017/10/27 Javascript
vue elementUI 表单校验功能之数组多层嵌套
2019/06/04 Javascript
Layui给switch添加响应事件的例子
2019/09/03 Javascript
layui表格数据复选框回显设置方法
2019/09/13 Javascript
Vue和React有哪些区别
2020/09/12 Javascript
[02:40]DOTA2英雄基础教程 先知
2013/11/29 DOTA
Python中使用不同编码读写txt文件详解
2015/05/28 Python
Python数组定义方法
2016/04/13 Python
python读取与写入csv格式文件的示例代码
2017/12/16 Python
python 设置文件编码格式的实现方法
2017/12/21 Python
python实现人脸识别经典算法(一) 特征脸法
2018/03/13 Python
pyqt5的QComboBox 使用模板的具体方法
2018/09/06 Python
Python 20行简单实现有道在线翻译的详解
2019/05/15 Python
印尼旅游网站:via
2017/11/12 全球购物
博士学位自我鉴定范文
2013/12/26 职场文书
阳光体育活动总结
2014/04/30 职场文书
质监局领导班子践行群众路线整改方案
2014/10/26 职场文书
小学教学工作总结2015
2015/05/13 职场文书
诗词赏析-(浣溪沙)
2019/08/13 职场文书
关于企业的执行力标语大全
2020/01/06 职场文书
自从在 IDEA 中用了热部署神器 JRebel 之后,开发效率提升了 10(真棒)
2021/06/26 Java/Android
python库Tsmoothie模块数据平滑化异常点抓取
2022/06/10 Python