python爬取网易云歌词
前言
本文的文字及圖片來源于網絡,僅供學習、交流使用,不具有任何商業用途,如有問題請及時聯系我們以作處理。
PS:如有需要Python學習資料的小伙伴可以加點擊下方鏈接自行獲取
python免費學習資料以及群交流解答點擊即可加入
接觸python也有一段時間了,一提到python,可能大部分pythoner都會想到爬蟲,沒錯,今天我們的話題就是爬蟲!作為一個小學生,關于爬蟲其實本人也只是略懂,懷著”Done is better than perfect”的態度硬著頭皮開始了這篇文章的撰寫!好了,廢話不多說!
先說一下今天我們的目的,作為一個音癡但不影響我對于音樂的執著,所以今天我們爬取的是網易云音樂,我們將會通過代碼爬取歌詞并寫入到本地。
作為新手,我很本能就打開頁面復制了url,然后用Beautifulsoup解析了網頁并打印出來,然后去查找歌詞所在的標簽,心想這不是so easy嗎!寫下了以下代碼
?
臥擦嘞,打印出來了一些什么鬼啊!居然沒有找到歌詞!怎么辦!怎么辦!沉思了良久后我覺得我掉進了一個巨坑,事情絕對沒有那么簡單!.....(心情無比悲痛,此處省略一萬字)作為平常屢試不爽的招數今天居然裝逼失敗!痛定思痛,我覺得肯定是URL的問題,經過一番思索發現原來我找了一個假的URL!幾經波折,找到了這樣一個URL
'http://music.163.com/api/song/lyric?' + 'id=' + str(191232) + '&lv=1&kv=1&tv=-1'
打印出來的效果是這樣的:
這才像那么回事了,但是發現里面還多了一些不需要的東西。
第二步,篩選出我們需要的元素,這里我們將用到正則表達式和json,切記用之前先導入這兩個模塊。加入幾行代碼,帥選后的結果為:
到這里我們已經基本上完成了我們的工作。最后一步,寫入文本就不多說了,這樣我們再加上幾行代碼就搞定了!這里我們先貼上之前的代碼
由于本人對歌神的崇拜猶如滔滔江水之連綿不絕,幾乎他的每一首歌都很喜歡,所以我想多下幾首歌的歌詞,熱心的吃瓜群眾可能會這樣提醒我換一首歌,把URL復制進去替換一下不就OK了嗎,但是作為一個連吃飯都舍不得下床的極度懶惰者我怎么可能會做這樣繁瑣的事呢!誒換了一首歌也只是歌曲的ID發生了變化。找到規律了!我們可以定義一個這樣的函數根據歌曲的ID去自動下載歌曲的歌詞,我們想要下載哪首歌曲的歌詞需要輸入歌曲的ID就可以了!我們可以看到張學友的主頁有50首最熱門的單曲,我們姑且就先定一個小目標,下他個50首歌!根據我們剛剛的思路我們只需要從這個頁面篩選出這50首歌曲的ID就可以了!這時候我們又遇到了和剛剛一樣的問題,print一個居然找不到我們需要的元素。歷經千辛萬苦終于get到了一個爭氣的URL,
'http://music.163.com/artist?id=' + str(6460)
同樣,經過一番篩我們找到了自己需要的東西,那就是一大串的music_id!說了這么多上代碼
再來一張效果圖
?有了這些我們就可以根據一個歌手的ID爬取這個歌手的50首熱門歌曲的歌詞,定義一個函數即可,這里就不貼代碼了。就這樣我成功的爬取了歌神的50首熱門歌曲的所有歌詞!講到這里可能有的朋友說自己的偶像不是學友哥啊,我想爬取其他歌手的歌詞,比如說我們的華仔啊,周董啊,天后王菲啊.....于是我就又折騰了一下,找到這樣一個頁面“華語樂壇歌手歷史地位排行top50”(注:歌手排列順序為網上搬運,不代表單主看法,排行榜出處網址: http://m.icaijing.com)索性我就我把這五十個歌手的50首熱門歌曲都爬取下來吧!不料又出了一個問題!下載到某位歌手的一首歌時報錯了!
思考了一會,覺得代碼沒有問題啊!于是做了一個標記,可以讓我看到是下載到哪個歌手的哪個歌手的哪一首歌時出了錯誤,機智的我終于找到了問題所在,原來是該歌曲沒有提供歌詞!于是又添了幾行代碼引入了異常機制!終于完美了!下面附上源代碼及效果圖
效果圖
總結
以上是生活随笔為你收集整理的python爬取网易云歌词的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java Decompiler(Java
- 下一篇: 打针小说软件测试,UPDATE注射(my