教你如何使用Python爬蟲從酷狗爬取出喜歡聽的音樂!

介紹

你是不是常常想要在各大音樂網(wǎng)站上下載音樂桃熄?但是網(wǎng)站卻逼迫你下載他們的應用先口?然而,你下載了應用瞳收,它們卻逼迫你購買vip......沒關系碉京,今天我們就來用爬蟲手段“制裁”這些網(wǎng)站!首先缎讼,就由最簡單的酷狗音樂開始爬收夸!

功能概述

讓用戶輸入要搜索的音樂名,然后把所有的音樂以及每一個音樂對應的信息展示給用戶血崭。再詢問用戶要不要下載任何音樂卧惜,如果要,則讓用戶輸入音樂對應的id號來下載(支持批量下載)夹纫。

找出思路

首先咽瓷,在獲取多首歌曲的信息和下載地址之前,我們需要知道如何獲取一首歌的下載地址舰讹。

打開www.kugou.com 茅姜,在搜索欄里輸入你想要查找的歌曲名。按下回車月匣。切換網(wǎng)頁之后钻洒,點進一首歌曲的播放頁。按下F12锄开,調出開發(fā)者工具素标。選擇network,然后點all萍悴⊥吩猓可以看到寓免,目前是沒有任何東西顯示的。因為所有的文件已經(jīng)在你打開開發(fā)者工具的時候加載完了计维,此時此刻袜香,你只需要F5刷新一下網(wǎng)頁。好了鲫惶,現(xiàn)在

你就能看到類似這樣的頁面蜈首。

?

可以看到什么js文件啊,png文件啊剑按,音頻文件啊疾就,都沒有!因為我們在調出開發(fā)者工具之前艺蝴,網(wǎng)站已經(jīng)加載完了文件,這個時候鸟废,我們只需要按下F5刷新一下網(wǎng)站猜敢。好了,所有的文件加載出來了盒延。進入到一個叫做index.php?的文件缩擂,然后進入到這個文件的地址。

?添寺、

進入這個文件地址之后胯盯,這實際上就是音樂的信息(為了方便,我在文章后面就說是信息地址)计露。我們還可以看到一個叫play_url的東西博脑,這個play_url就是音頻的mp3文件地址,可以看到票罐,這些play_url都是把/變成了/叉趣。我們不用擔心這個,因為網(wǎng)址輸入欄會自動幫我們調整成/该押,但是在用代碼實現(xiàn)爬蟲的時候疗杉,我們就需要把/變成/了。但短時間內蚕礼,我們先不用管這個烟具。讓我們進入到這個網(wǎng)址眉睹,咦箫津?這不是我們剛剛播放的音樂嗎进肯?

?

成功之后喊儡,我們就有了更大的信心和思路去爬蟲坏瞄。我們只要把每首歌曲的信息地址找出來荠察,然后用正則表達式把每首歌曲的信息和音樂地址獲取出來悍及。再一次用爬蟲獲取到音樂的二進制編碼东且,保存在本地。

那我們如何獲取每首歌的信息地址呢金度?通過拼接地址应媚!讓我們看這兩首歌的url有啥不同,你就知道了猜极。

Faded -https://wwwapi.kugou.com/yy/i...

卡路里 -https://wwwapi.kugou.com/yy/i...

可以看到除了hash值以外的東西中姜,就沒有啥區(qū)別了。也就是說我們只需要通過https://wwwapi.kugou.com/yy/i...

來拼接每首歌的信息地址就行了跟伏。那歌曲的hash要去那里找呢丢胚?回到酷狗的音樂搜索欄,隨便搜一首歌按下回車受扳⌒辏可以看到這里有好多首歌。F12-NETWORK-ALL-F5勘高,我們找出一個這樣的文件峡蟋。

?

我們進入這個網(wǎng)址,就可以看到剛剛所有歌曲的hash华望。那問題又來了蕊蝗,我們又要怎樣獲取到這個hash信息網(wǎng)址呢?這個太簡單了赖舟,只需要通過https://songsearch.kugou.com/...

拼接網(wǎng)址就行蓬戚。

這個搜索的歌曲名,我們代碼用input讓用戶輸入歌曲名就行了宾抓。那么子漩,你找到思路了嗎?

思路:拼接出hash信息網(wǎng)址洞慎,正則表達式獲取到所有歌曲的hash痛单,再拼接出單首歌曲的url。最后再一次用正則表達式獲取歌曲的play_url即可劲腿。

開始寫代碼

首先導入我們的requests和re正則表達式庫旭绒。re用來找出音樂的信息和下載地址,requests負責獲取文本和下載音樂焦人。

?

我們還要設置一些變量挥吵,這些變量在后面可是會派上大用場的。

?

我們不是要拼接出多首歌曲的信息網(wǎng)址嗎花椭?那我們就先要讓用戶輸入歌曲名忽匈。接著再拼。

?

現(xiàn)在矿辽,我們就可以用requests請求文本了丹允!由于這個網(wǎng)址是get請求的而且我們請求的是文本郭厌,所以,我們也要用方法requests.get().text方法雕蔽。

?

接著折柠,你可以試著打印一下文本。打印出來的文本和我們拼接的網(wǎng)址的內容毫無區(qū)別(我這里就不打印了批狐,等下python卡死就完了)

在這些文本里扇售,我們可以獲取到每首歌的hash值。用正則表達式查找就行了嚣艇。

?

打印一下song_hashes承冰,可以看到,他是個列表食零。所以我們要進行for遍歷困乒。

?

上段代碼中,我們進行了每個hash的拼接操作贰谣,然后我們在從單首歌曲的信息文本里找到了音樂名和作者和下載地址顶燕。由于音樂名和作者是進行ascii編碼過的,所以我們也要進行一個解碼冈爹。由于歌曲名和歌手有時候會重復打印,所以我們每一次打印音樂和作者之前欧引,都會把音樂和作者名加入到一個字典频伤。每一次打印都會進行一次是否存在字典的判斷。字典的key就由我們的timer變量的變化進行改變key名芝此。另外憋肖,我們還把每首歌的下載地址保存到了song_urls字典里。

打印了音樂信息之后婚苹,就要詢問用戶要下載那首歌了岸更。

?

按以前的做法,用requests.get().content把音樂轉換成二進制文件再進行保存膊升。在get之前怎炊,我們還需要把網(wǎng)址的亂七八糟的\/變成/。之后廓译,就能保存下來了评肆!

我們就拿一首叫做the day you went away的歌試一下

代碼實現(xiàn)效果:

?

程序的不足

酷狗每隔一段時間都會弄個滑動驗證碼,這個時候我們的程序就不能獲取到數(shù)據(jù)非区。這種情況瓜挽,用selenium就可以輕松解決。

完整代碼:

?

?

此文轉載文征绸,著作權歸作者所有久橙,如有侵權聯(lián)系小編刪除俄占!

原文地址:https://www.tuicool.com/articles/Vjyau2Y

需要源代碼或者想了解多的(點擊這里下載)

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市淆衷,隨后出現(xiàn)的幾起案子缸榄,更是在濱河造成了極大的恐慌,老刑警劉巖吭敢,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件碰凶,死亡現(xiàn)場離奇詭異,居然都是意外死亡鹿驼,警方通過查閱死者的電腦和手機欲低,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來畜晰,“玉大人砾莱,你說我怎么就攤上這事∑啾牵” “怎么了腊瑟?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長块蚌。 經(jīng)常有香客問我闰非,道長,這世上最難降的妖魔是什么峭范? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任财松,我火速辦了婚禮,結果婚禮上纱控,老公的妹妹穿的比我還像新娘辆毡。我一直安慰自己,他們只是感情好甜害,可當我...
    茶點故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布舶掖。 她就那樣靜靜地躺著,像睡著了一般尔店。 火紅的嫁衣襯著肌膚如雪眨攘。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天闹获,我揣著相機與錄音期犬,去河邊找鬼。 笑死避诽,一個胖子當著我的面吹牛龟虎,可吹牛的內容都是我干的。 我是一名探鬼主播沙庐,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼鲤妥,長吁一口氣:“原來是場噩夢啊……” “哼佳吞!你這毒婦竟也來了?” 一聲冷哼從身側響起棉安,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤底扳,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后贡耽,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體衷模,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年蒲赂,在試婚紗的時候發(fā)現(xiàn)自己被綠了阱冶。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,711評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡滥嘴,死狀恐怖木蹬,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情若皱,我是刑警寧澤镊叁,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站走触,受9級特大地震影響晦譬,放射性物質發(fā)生泄漏。R本人自食惡果不足惜互广,卻給世界環(huán)境...
    茶點故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一蛔添、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧兜辞,春花似錦、人聲如沸夸溶。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽缝裁。三九已至扫皱,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間捷绑,已是汗流浹背韩脑。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留粹污,地道東北人段多。 一個月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像壮吩,于是被迫代替她去往敵國和親进苍。 傳聞我的和親對象是個殘疾皇子加缘,可洞房花燭夜當晚...
    茶點故事閱讀 44,611評論 2 353