基于python實(shí)現(xiàn)的百度新歌榜、熱歌榜下載器(附代碼)
前言
首先聲明,本工具僅僅為學(xué)習(xí)之用,不涉及版權(quán)問(wèn)題,因?yàn)榘俣纫魳?lè)里面的歌曲本身是可以下載的,而且現(xiàn)在百度也提供了”百度音樂(lè)播放器”,可以通過(guò)這個(gè)工具進(jìn)行批量下載。
我當(dāng)時(shí)做這個(gè)工具的時(shí)候,百度還沒(méi)有提供”百度音樂(lè)播放器”,而我又想批量下載,所以做了這樣的一個(gè)下載工具。當(dāng)然,主要還是為了學(xué)習(xí)。
工具采用Python2.7.3+PyQt開發(fā)。
功能:
1.集中展示百度新歌榜或熱歌榜可下載的歌單。
2.支持單個(gè)、多個(gè)歌曲的下載。
3.可復(fù)制歌單中所有的鏈接內(nèi)容,方便在迅雷等下載工具中創(chuàng)建下載組。
缺陷:
目前采用單線程,效率不高,UI界面容易假死。
本工具運(yùn)行流程:
1.模擬用戶登錄百度。
2.若登錄成功,采集并解析頁(yè)面內(nèi)容,加載歌單列表。
3.用戶點(diǎn)擊下載按鈕或者批量下載按鈕后,下載歌曲。

使用方法:
1.在配置文件setting.py的最后,配置可登錄百度的賬號(hào)和密碼,及百度熱歌榜或新歌榜的URL.
username = "your baidu acount" #配置你的百度賬號(hào) password = "your baidu password" #配置你的百度密碼 musiclistUrl = "http://music.baidu.com/top/dayhot" # http://music.baidu.com/top/new
2.直接運(yùn)行mainWindow.py文件即可,如果網(wǎng)速不給力的話可能要等上3、4分鐘。
運(yùn)行后如圖:

用到的知識(shí):
1.首先用到了PyQt的GUI編程,窗體布局及QTableWidget、QProgressBar、QPushButton等控件及控件的重寫
2.用到了網(wǎng)絡(luò)編程的部分內(nèi)容,利用urllib,urllib2,cookielib請(qǐng)求網(wǎng)頁(yè),模擬登錄百度。
3.利用HTMLParser解析網(wǎng)頁(yè)內(nèi)容,匹配網(wǎng)頁(yè)元素。
4.利用codecs進(jìn)行文件的讀寫。
遇到的問(wèn)題:
1.編碼問(wèn)題,由于在創(chuàng)建文件時(shí)將文件編碼設(shè)置為UTF-8,當(dāng)需要向文件寫入的內(nèi)容為中文等非ASCII碼內(nèi)容時(shí),總是提示編碼問(wèn)題。其實(shí),百度音樂(lè)的網(wǎng)頁(yè)全部為UTF-8格式,因此從網(wǎng)頁(yè)中獲取的內(nèi)容也是UTF-8格式,但是,要講內(nèi)容寫入U(xiǎn)TF-8的文本中,必須將網(wǎng)頁(yè)內(nèi)容進(jìn)行decode(“utf8”)解碼為unicode格式,才能正常寫入。
檢測(cè)內(nèi)容編碼,可以用chardet模塊的chardet.detect(“內(nèi)容”)的方法。
另外,HTMLParser解析網(wǎng)頁(yè)內(nèi)容過(guò)程中,有的下載頁(yè)面會(huì)出現(xiàn)問(wèn)題,根據(jù)提示信息發(fā)現(xiàn)還是編碼問(wèn)題,將feed()方法中的內(nèi)容參數(shù)進(jìn)行decode(“utf8”)后,結(jié)果正常。
decode將內(nèi)容根據(jù)參數(shù)內(nèi)容解碼為unicode類型,具體要根據(jù)所采集的頁(yè)面的編碼。
github下載地址:點(diǎn)這里
相關(guān)文章
Python 實(shí)現(xiàn)的 Google 批量翻譯功能
這篇文章主要介紹了Python 實(shí)現(xiàn)的 Google 批量翻譯功能,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-08-08
Python decorator攔截器代碼實(shí)例解析
這篇文章主要介紹了Python decorator攔截器代碼實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04
python實(shí)現(xiàn)查找所有程序的安裝信息
本文給大家分享的是使用python通過(guò)注冊(cè)表信息實(shí)現(xiàn)快速查找windows應(yīng)用程序的安裝信息的方法和代碼示例,有需要的小伙伴可以參考下2020-02-02
Python的Flask框架中使用Flask-SQLAlchemy管理數(shù)據(jù)庫(kù)的教程
在Python中我們可以使用SQLAlchemy框架進(jìn)行數(shù)據(jù)庫(kù)操作,那么對(duì)應(yīng)的在Flask框架中我們可以使用SQLAlchemy,下面我們就來(lái)看一下Python的Flask框架中使用Flask-SQLAlchemy管理數(shù)據(jù)庫(kù)的教程2016-06-06
Django代碼性能優(yōu)化與Pycharm Profile使用詳解
本文通過(guò)一個(gè)簡(jiǎn)單的實(shí)例一步一步引導(dǎo)讀者對(duì)其進(jìn)行全方位的性能優(yōu)化,這篇文章主要給大家介紹了關(guān)于Django代碼性能優(yōu)化與Pycharm Profile使用的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2018-08-08
用sleep間隔進(jìn)行python反爬蟲的實(shí)例講解
在本篇文章里小編給大家整理了一篇關(guān)于用sleep間隔進(jìn)行python反爬蟲的實(shí)例講解內(nèi)容,有需要的朋友們可以學(xué)習(xí)下。2020-11-11
Python人工智能之混合高斯模型運(yùn)動(dòng)目標(biāo)檢測(cè)詳解分析
運(yùn)動(dòng)目標(biāo)檢測(cè)是計(jì)算機(jī)視覺(jué)領(lǐng)域中的一個(gè)重要內(nèi)容,其檢測(cè)效果將會(huì)對(duì)目標(biāo)跟蹤與識(shí)別造成一定的影響,本文將介紹用Python來(lái)進(jìn)行混合高斯模型運(yùn)動(dòng)目標(biāo)檢測(cè),感興趣的朋友快來(lái)看看吧2021-11-11
Django使用裝飾器限制對(duì)視圖的訪問(wèn)及實(shí)現(xiàn)原理
除了可以在視圖處理中校驗(yàn)用戶身份以及驗(yàn)證用戶權(quán)限之外,Django還提供了便捷的裝飾器來(lái)完成這兩類校驗(yàn),下面介紹這兩個(gè)裝飾器的使用方法與實(shí)現(xiàn)原理,對(duì)Django裝飾器限制視圖訪問(wèn)相關(guān)知識(shí)感興趣的朋友一起看看吧2022-10-10
Python中的數(shù)學(xué)運(yùn)算操作符使用進(jìn)階
這篇文章主要介紹了Python中的數(shù)學(xué)運(yùn)算操作符使用進(jìn)階,也包括運(yùn)算賦值操作符等基本知識(shí)的小結(jié),需要的朋友可以參考下2016-06-06

