基于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 2与Python 3版本和编码的对比
Feb 14 Python
python爬虫入门教程--快速理解HTTP协议(一)
May 25 Python
对python多线程中互斥锁Threading.Lock的简单应用详解
Jan 11 Python
python自动化之Ansible的安装教程
Jun 13 Python
python中bs4.BeautifulSoup的基本用法
Jul 27 Python
Python中base64与xml取值结合问题
Dec 22 Python
TensorFlow 多元函数的极值实例
Feb 10 Python
Python3 assert断言实现原理解析
Mar 02 Python
Django admin 实现search_fields精确查询实例
Mar 30 Python
在 Python 中使用 7zip 备份文件的操作
Dec 11 Python
python re模块常见用法例举
Mar 01 Python
Python数据清洗工具之Numpy的基本操作
Apr 22 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
UCenter Home二次开发指南
2009/05/28 PHP
php 多关键字 高亮显示实现代码
2012/04/23 PHP
解析php框架codeigniter中如何使用框架的session
2013/06/24 PHP
PHP中的traits实现代码复用使用实例
2015/05/13 PHP
laravel 修改记住我功能的cookie保存时间的方法
2019/10/14 PHP
js DOM 元素ID就是全局变量
2012/09/20 Javascript
web的各种前端打印方法之jquery打印插件jqprint实现网页打印
2013/01/09 Javascript
jQuery中index()方法用法实例
2014/12/27 Javascript
jQuery中dom元素上绑定的事件详解
2015/04/24 Javascript
Jquery easyui开启行编辑模式增删改操作
2016/01/14 Javascript
Bootstrap每天必学之警告框插件
2016/04/26 Javascript
EasyUI中的dataGrid的行内编辑
2017/06/22 Javascript
vue多种弹框的弹出形式的示例代码
2017/09/18 Javascript
jQuery+Cookie实现切换皮肤功能【附源码下载】
2018/03/25 jQuery
Webpack devServer中的 proxy 实现跨域的解决
2018/06/15 Javascript
小程序红包雨的实现示例
2019/02/19 Javascript
Vue入门学习笔记【基本概念、对象、过滤器、指令等】
2019/04/13 Javascript
详解微信小程序网络请求接口封装实例
2019/05/02 Javascript
基于jsbarcode 生成条形码并将生成的条码保存至本地+源码
2020/04/27 Javascript
vuejs element table 表格添加行,修改,单独删除行,批量删除行操作
2020/07/18 Javascript
Python with的用法
2014/08/22 Python
使用Python抓取模板之家的CSS模板
2015/03/16 Python
python使用smtplib模块通过gmail实现邮件发送的方法
2015/05/08 Python
探究python中open函数的使用
2016/03/01 Python
详谈套接字中SO_REUSEPORT和SO_REUSEADDR的区别
2018/04/28 Python
Python列表list常用内建函数实例小结
2019/10/22 Python
解决tensorboard多个events文件显示紊乱的问题
2020/02/15 Python
python产生模拟数据faker库的使用详解
2020/11/04 Python
CSS3 特效范例整理
2011/08/22 HTML / CSS
moosejaw旗下的户外商品促销网站:Mountain Steals
2017/02/27 全球购物
美国马匹用品和骑马配件购物网站:Horse.com
2018/01/08 全球购物
师范学院美术系毕业生自我鉴定
2014/01/29 职场文书
《走一步再走一步》教学反思
2014/02/15 职场文书
新春联欢会主持词
2014/03/24 职场文书
法人代表委托书
2014/04/04 职场文书
劳模事迹材料范文
2014/12/24 职场文书