日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

基于python實(shí)現(xiàn)的百度音樂(lè)下載器python pyqt改進(jìn)版(附代碼)

系統(tǒng) 2258 0

前言

之前寫(xiě)過(guò)一個(gè)用python實(shí)現(xiàn)的百度新歌榜、熱歌榜下載器的文章,實(shí)現(xiàn)了百度新歌、熱門(mén)歌曲的爬取與下載。但那個(gè)采用的是單線程,網(wǎng)絡(luò)狀況一般的情況下,掃描前100首歌的時(shí)間大概得到40來(lái)秒。而且用Pyqt做的界面,在下載的過(guò)程中進(jìn)行窗口操作,會(huì)出現(xiàn)UI阻塞的現(xiàn)象。

前兩天有時(shí)間調(diào)整了一下,做了幾方面的改進(jìn):

1.修改了UI界面阻塞的問(wèn)題,下載的過(guò)程中可以進(jìn)行其它的UI操作;

2.爬蟲(chóng)程序采用一個(gè)主線程,8個(gè)子線程的方式快速爬取,網(wǎng)絡(luò)狀況一致的情況下,將掃描100首歌曲的時(shí)間提高到了8、9秒左右;(本地下載速度大概300K左右)

3.解析網(wǎng)頁(yè)的方法由之前的HtmlParser變成了現(xiàn)在的BeautifulSoup;

要運(yùn)行此功能需要安裝PyQt、BeautifulSoup。運(yùn)行之前需要在settings.py文件中配置百度賬號(hào)和密碼。

            
username = "your baidu acount" #配置你的百度賬號(hào) 
password = "your baidu password" #配置你的百度密碼 
          

配置好賬戶(hù)和密碼后,直接雙擊spiderMan.py文件運(yùn)行即可。

運(yùn)行流程

1.首先由spiderMan.py進(jìn)入主程序,開(kāi)始運(yùn)行。

2.主程序?qū)⒖刂茩?quán)交給dispatcher調(diào)度程序,調(diào)度程序首先登錄百度。

3.如果登錄成功,調(diào)度程序開(kāi)啟8個(gè)子線程,由這8個(gè)子線程抓取百度新歌榜或百度熱歌榜的歌曲鏈接,分析鏈接,獲取真正的下載地址,并將下載地址、歌曲名稱(chēng)、歌手信息寫(xiě)入一個(gè)文本文件。

4.當(dāng)子線程執(zhí)行完畢,主程序讀取上一步生成的文本文件,加載UI窗體。

整個(gè)過(guò)程如下圖:

基于python實(shí)現(xiàn)的百度音樂(lè)下載器python pyqt改進(jìn)版(附代碼)_第1張圖片

正常運(yùn)行后的效果如下圖:

基于python實(shí)現(xiàn)的百度音樂(lè)下載器python pyqt改進(jìn)版(附代碼)_第2張圖片

問(wèn)題:

在github上tigerstudent提出了兩個(gè)問(wèn)題:

1.文件spiderMan.py中獲取當(dāng)前腳本所在的目錄 root = os.path.dirname(__file__)+"/" 獲取到的目錄為空,建議應(yīng)該用os.getcwd()。

這里我實(shí)際想要的是當(dāng)前腳本所在的絕對(duì)路徑,正確的腳本應(yīng)該是這樣的: os.path.abspath(os.path.dirname(__file__))+"/"

那么為什么 os.path.dirname(__file__) os.getcwd() 為什么都不行呢? os.path.dirname(__file__) 是當(dāng)前腳本相對(duì)于腳本的執(zhí)行目錄的相對(duì)路徑,而 os.getcwd() 是腳本實(shí)際執(zhí)行的目錄。新建test.py文件,代碼如下:

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

首先定位到計(jì)算機(jī)根目錄/,執(zhí)行如下命令:python /home/fengzheng/vimPython/BaiduMusicSpider-master/test.py,輸出結(jié)果:

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

?定位到/home/fengzheng/vimPython/,執(zhí)行如下命令:python BaiduMusicSpider-master/test.py,輸出結(jié)果:

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

這樣說(shuō)吧,拋開(kāi)執(zhí)行上的參數(shù)值,在windows下把命令理解為單擊鼠標(biāo)直接運(yùn)行的操作, os.path.dirname(__file__) 就是所執(zhí)行的腳本文件對(duì)于當(dāng)前所處的目錄的相對(duì)路徑,而os.getcwd()就是當(dāng)前執(zhí)行這個(gè)腳本所在的路徑,即在哪個(gè)位置執(zhí)行就是那個(gè)位置的路徑。

2.有一些路徑字符串中用的是”\”,正確的寫(xiě)法應(yīng)該是”/”,因?yàn)楫?dāng)時(shí)是在windows上寫(xiě)的,沒(méi)太注意。

github下載地址如下:下載地址

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 乡宁县| 河间市| 资源县| 葵青区| 刚察县| 雅安市| 宁海县| 芒康县| 旬邑县| 婺源县| 乌拉特前旗| 柘荣县| 壶关县| 竹北市| 盘锦市| 曲阜市| 赞皇县| 长海县| 合江县| 夏河县| 崇明县| 韶关市| 攀枝花市| 顺平县| 松潘县| 西平县| 哈巴河县| 临武县| 大名县| 普洱| 红原县| 天峻县| 铁力市| 天水市| 武安市| 资溪县| 两当县| 民县| 都江堰市| 抚顺县| 辛集市|