前言
首先聲明,本工具僅僅為學習之用,不涉及版權問題,因為百度音樂里面的歌曲本身是可以下載的,而且現(xiàn)在百度也提供了”百度音樂播放器”,可以通過這個工具進行批量下載。
我當時做這個工具的時候,百度還沒有提供”百度音樂播放器”,而我又想批量下載,所以做了這樣的一個下載工具。當然,主要還是為了學習。
工具 采用Python2.7.3+PyQt開發(fā)。
功能:
1.集中展示百度新歌榜或熱歌榜可下載的歌單。
2.支持單個、多個歌曲的下載。
3.可復制歌單中所有的鏈接內容,方便在迅雷等下載工具中創(chuàng)建下載組。
缺陷:
目前采用單線程,效率不高,UI界面容易假死。
本工具運行流程:
1.模擬用戶登錄百度。
2.若登錄成功,采集并解析頁面內容,加載歌單列表。
3.用戶點擊下載按鈕或者批量下載按鈕后,下載歌曲。
使用方法:
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分鐘。
運行后如圖:
用到的知識:
1.首先用到了PyQt的GUI編程,窗體布局及QTableWidget、QProgressBar、QPushButton等控件及控件的重寫
2.用到了網(wǎng)絡編程的部分內容,利用urllib,urllib2,cookielib請求網(wǎng)頁,模擬登錄百度。
3.利用HTMLParser解析網(wǎng)頁內容,匹配網(wǎng)頁元素。
4.利用codecs進行文件的讀寫。
遇到的問題:
1.編碼問題,由于在創(chuàng)建文件時將文件編碼設置為UTF-8,當需要向文件寫入的內容為中文等非ASCII碼內容時,總是提示編碼問題。其實,百度音樂的網(wǎng)頁全部為UTF-8格式,因此從網(wǎng)頁中獲取的內容也是UTF-8格式,但是,要講內容寫入UTF-8的文本中,必須將網(wǎng)頁內容進行decode(“utf8”)解碼為unicode格式,才能正常寫入。
檢測內容編碼,可以用chardet模塊的chardet.detect(“內容”)的方法。
另外,HTMLParser解析網(wǎng)頁內容過程中,有的下載頁面會出現(xiàn)問題,根據(jù)提示信息發(fā)現(xiàn)還是編碼問題,將feed()方法中的內容參數(shù)進行decode(“utf8”)后,結果正常。
decode將內容根據(jù)參數(shù)內容解碼為unicode類型,具體要根據(jù)所采集的頁面的編碼。
github下載地址:點這里
更多文章、技術交流、商務合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
