溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用python實現(xiàn)百度新歌榜、熱歌榜下載器

發(fā)布時間:2021-04-06 11:21:44 來源:億速云 閱讀:149 作者:小新 欄目:開發(fā)技術(shù)

這篇文章將為大家詳細講解有關如何使用python實現(xiàn)百度新歌榜、熱歌榜下載器,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

前言

首先聲明,本工具僅僅為學習之用,不涉及版權(quán)問題,因為百度音樂里面的歌曲本身是可以下載的,而且現(xiàn)在百度也提供了”百度音樂播放器”,可以通過這個工具進行批量下載。

我當時做這個工具的時候,百度還沒有提供”百度音樂播放器”,而我又想批量下載,所以做了這樣的一個下載工具。當然,主要還是為了學習。

工具采用Python2.7.3+PyQt開發(fā)。

功能:

1.集中展示百度新歌榜或熱歌榜可下載的歌單。

2.支持單個、多個歌曲的下載。

3.可復制歌單中所有的鏈接內(nèi)容,方便在迅雷等下載工具中創(chuàng)建下載組。

缺陷:

目前采用單線程,效率不高,UI界面容易假死。

本工具運行流程:

1.模擬用戶登錄百度。

2.若登錄成功,采集并解析頁面內(nèi)容,加載歌單列表。

3.用戶點擊下載按鈕或者批量下載按鈕后,下載歌曲。

如何使用python實現(xiàn)百度新歌榜、熱歌榜下載器

使用方法:

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文件即可,如果網(wǎng)速不給力的話可能要等上3、4分鐘。

運行后如圖:

如何使用python實現(xiàn)百度新歌榜、熱歌榜下載器

用到的知識:

1.首先用到了PyQt的GUI編程,窗體布局及QTableWidget、QProgressBar、QPushButton等控件及控件的重寫

2.用到了網(wǎng)絡編程的部分內(nèi)容,利用urllib,urllib2,cookielib請求網(wǎng)頁,模擬登錄百度。

3.利用HTMLParser解析網(wǎng)頁內(nèi)容,匹配網(wǎng)頁元素。

4.利用codecs進行文件的讀寫。

遇到的問題:

1.編碼問題,由于在創(chuàng)建文件時將文件編碼設置為UTF-8,當需要向文件寫入的內(nèi)容為中文等非ASCII碼內(nèi)容時,總是提示編碼問題。其實,百度音樂的網(wǎng)頁全部為UTF-8格式,因此從網(wǎng)頁中獲取的內(nèi)容也是UTF-8格式,但是,要講內(nèi)容寫入UTF-8的文本中,必須將網(wǎng)頁內(nèi)容進行decode(“utf8”)解碼為unicode格式,才能正常寫入。

檢測內(nèi)容編碼,可以用chardet模塊的chardet.detect(“內(nèi)容”)的方法。

另外,HTMLParser解析網(wǎng)頁內(nèi)容過程中,有的下載頁面會出現(xiàn)問題,根據(jù)提示信息發(fā)現(xiàn)還是編碼問題,將feed()方法中的內(nèi)容參數(shù)進行decode(“utf8”)后,結(jié)果正常。

decode將內(nèi)容根據(jù)參數(shù)內(nèi)容解碼為unicode類型,具體要根據(jù)所采集的頁面的編碼。

關于“如何使用python實現(xiàn)百度新歌榜、熱歌榜下載器”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI