基于python实现的百度音乐下载器python pyqt改进版(附代码)


Posted in Python onAugust 05, 2019

前言

之前写过一个用python实现的百度新歌榜、热歌榜下载器的文章,实现了百度新歌、热门歌曲的爬取与下载。但那个采用的是单线程,网络状况一般的情况下,扫描前100首歌的时间大概得到40来秒。而且用Pyqt做的界面,在下载的过程中进行窗口操作,会出现UI阻塞的现象。

前两天有时间调整了一下,做了几方面的改进:

1.修改了UI界面阻塞的问题,下载的过程中可以进行其它的UI操作;

2.爬虫程序采用一个主线程,8个子线程的方式快速爬取,网络状况一致的情况下,将扫描100首歌曲的时间提高到了8、9秒左右;(本地下载速度大概300K左右)

3.解析网页的方法由之前的HtmlParser变成了现在的BeautifulSoup;

要运行此功能需要安装PyQt、BeautifulSoup。运行之前需要在settings.py文件中配置百度账号和密码。

username = "your baidu acount" #配置你的百度账号 
password = "your baidu password" #配置你的百度密码

配置好账户和密码后,直接双击spiderMan.py文件运行即可。

运行流程

1.首先由spiderMan.py进入主程序,开始运行。

2.主程序将控制权交给dispatcher调度程序,调度程序首先登录百度。

3.如果登录成功,调度程序开启8个子线程,由这8个子线程抓取百度新歌榜或百度热歌榜的歌曲链接,分析链接,获取真正的下载地址,并将下载地址、歌曲名称、歌手信息写入一个文本文件。

4.当子线程执行完毕,主程序读取上一步生成的文本文件,加载UI窗体。

整个过程如下图:

基于python实现的百度音乐下载器python pyqt改进版(附代码)

正常运行后的效果如下图:

基于python实现的百度音乐下载器python pyqt改进版(附代码)

问题:

在github上tigerstudent提出了两个问题:

1.文件spiderMan.py中获取当前脚本所在的目录 root = os.path.dirname(__file__)+"/" 获取到的目录为空,建议应该用os.getcwd()。

这里我实际想要的是当前脚本所在的绝对路径,正确的脚本应该是这样的:os.path.abspath(os.path.dirname(__file__))+"/"

那么为什么os.path.dirname(__file__)os.getcwd()为什么都不行呢?os.path.dirname(__file__)是当前脚本相对于脚本的执行目录的相对路径,而os.getcwd()是脚本实际执行的目录。新建test.py文件,代码如下:

import os 
print("os.path.dirname(__file__):"+os.path.dirname(__file__)) 
print("os.getcwd():"+os.getcwd())

首先定位到计算机根目录/,执行如下命令:python /home/fengzheng/vimPython/BaiduMusicSpider-master/test.py,输出结果:

os.path.dirname(__file__):/home/fengzheng/vimPython/BaiduMusicSpider-master 
os.getcwd():

 定位到/home/fengzheng/vimPython/,执行如下命令:python BaiduMusicSpider-master/test.py,输出结果:

os.path.dirname(__file__):BaiduMusicSpider-master 
os.getcwd():/home/fengzheng/vimPython

这样说吧,抛开执行上的参数值,在windows下把命令理解为单击鼠标直接运行的操作,os.path.dirname(__file__)就是所执行的脚本文件对于当前所处的目录的相对路径,而os.getcwd()就是当前执行这个脚本所在的路径,即在哪个位置执行就是那个位置的路径。

2.有一些路径字符串中用的是”\”,正确的写法应该是”/”,因为当时是在windows上写的,没太注意。

github下载地址如下:下载地址

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
在Python程序中操作文件之isatty()方法的使用教程
May 24 Python
详解Pytorch 使用Pytorch拟合多项式(多项式回归)
May 24 Python
python中的不可变数据类型与可变数据类型详解
Sep 16 Python
python 找出list中最大或者最小几个数的索引方法
Oct 30 Python
python实现顺时针打印矩阵
Mar 02 Python
python使用selenium实现批量文件下载
Mar 11 Python
pytorch中的embedding词向量的使用方法
Aug 18 Python
Python While循环语句实例演示及原理解析
Jan 03 Python
pycharm设置python文件模板信息过程图解
Mar 10 Python
Python3内置函数chr和ord实现进制转换
Jun 05 Python
python中四舍五入的正确打开方式
Jan 18 Python
Python使用openpyxl批量处理数据
Jun 23 Python
使用coverage统计python web项目代码覆盖率的方法详解
Aug 05 #Python
基于python实现的百度新歌榜、热歌榜下载器(附代码)
Aug 05 #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
You might like
解决MySQL中文输出变成问号的问题
2008/06/05 PHP
php中mysql模块部分功能的简单封装
2011/09/30 PHP
php利用新浪接口查询ip获取地理位置示例
2014/01/20 PHP
php从字符串创建函数的方法
2015/03/16 PHP
PHP页面转UTF-8中文编码乱码的解决办法
2015/10/20 PHP
PHP缩略图生成和图片水印制作
2017/01/07 PHP
复制Input内容的js代码_支持所有浏览器,修正了Firefox3.5以上的问题
2010/06/21 Javascript
Javascript堆排序算法详解
2014/12/03 Javascript
省市区三级联动下拉框菜单javascript版
2015/08/11 Javascript
JavaScript+html5 canvas实现本地截图教程
2020/04/16 Javascript
Bootstrap编写一个兼容主流浏览器的受众门户式风格页面
2016/07/01 Javascript
jQuery视差滚动效果网页实现方法经验总结
2016/09/29 Javascript
JS正则匹配中文的方法示例
2017/01/06 Javascript
create-react-app使用antd按需加载的样式无效问题的解决
2019/02/26 Javascript
Python版实现微信公众号扫码登陆
2020/05/28 Javascript
[36:45]TNC vs VGJ.S 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python查找第k小元素代码分享
2013/12/18 Python
Python获取单个程序CPU使用情况趋势图
2015/03/10 Python
python中lambda()的用法
2017/11/16 Python
Python找出最小的K个数实例代码
2018/01/04 Python
Python File readlines() 使用方法
2018/03/19 Python
python3第三方爬虫库BeautifulSoup4安装教程
2018/06/19 Python
把pandas转换int型为str型的方法
2019/01/29 Python
Kali Linux安装ipython2 和 ipython3的方法
2019/07/11 Python
python统计函数库scipy.stats的用法解析
2020/02/25 Python
Python分类测试代码实例汇总
2020/07/23 Python
丝芙兰波兰:Sephora.pl
2018/03/25 全球购物
免税水晶:Duty Free Crystal
2019/05/13 全球购物
泰海淘:泰国king Power王权免税集团旗下跨境海淘综合型电商
2020/07/26 全球购物
生物科学系大学生的自我评价
2013/12/20 职场文书
2014领导班子四风问题对照检查材料思想汇报
2014/09/21 职场文书
小学少先队辅导员述职报告
2015/01/10 职场文书
网络管理员岗位职责
2015/02/12 职场文书
培训通知
2015/04/17 职场文书
销售合作意向书范本
2015/05/08 职场文书
音乐之声观后感
2015/06/04 职场文书