
前幾天小編給大家分享了資料可視化分析,在文尾提及了網易云音樂歌詞爬取,今天小編給大家分享網易云音樂歌詞爬取方法,
本文的總體思路如下:
找到正確的URL,獲取原始碼;
利用bs4決議原始碼,獲取歌曲名和歌曲ID;
呼叫網易云歌曲API,獲取歌詞;
將歌詞寫入檔案,并存入本地,
本文的目的是獲取網易云音樂的歌詞,并將歌詞存入到本地檔案,整體的效果圖如下所示:

本文以民謠歌神趙雷為資料采集物件,專門采集他的歌曲歌詞,其他歌手的歌詞采集方式可以類推,下圖展示的是《成都》歌詞,

一般來說,網頁上顯示的URL就可以寫在程式中,運行程式之后就可以采集到我們想要的網頁原始碼,But在網易云音樂網站中,這條路行不通,因為網頁中的URL是個假URL,真實的URL中是沒有/#號的,廢話不多說,直接上代碼,

本文利用requests、bs4、json和re模塊來采集網易云音樂歌詞,記得在程式中添加headers和反盜鏈referer以模擬瀏覽器,防止被網站拒絕訪問,這里的get_html方法專門用于獲取原始碼,通常我們也要做例外處理,未雨綢繆,
獲取到網頁原始碼之后,分析原始碼,發現歌曲的名字和ID藏的很深,縱里尋她千百度,發現她在原始碼的294行,藏在
- 標簽下,如下圖所示:

接下來我們利用美麗的湯來獲取目標資訊,直接上代碼,如下圖:

此處要注意獲取ID的時候需要對link進行切片處理,得到的數字便是歌曲的ID;另外,歌曲名是通過get_text()方法獲取到的,最后利用zip函式將歌曲名和ID一一對應并進行回傳,
得到ID之后便可以進入到內頁獲取歌詞了,但是URL還是不給力,如下圖:

雖然我們可以明白的看到網頁上的白紙黑字呈現的歌詞資訊,但是我們在該URL下卻無法獲取到歌詞資訊,小編通過抓包,找到了歌詞的URL,發現其是POST請求還有一大堆看不懂的data,總之這個URL是不能為我們效力,那該點解呢?
莫慌,小編找到了網易云音樂的API,只要把歌曲的ID放在API鏈接上便可以獲取到歌詞了,代碼如下:

在API中歌詞資訊是以json格式加載的,所以需要利用json將其進行序列化決議出來,并配合正則運算式進行清洗歌詞,如果不用正則運算式進行清洗的話,得到原始的資料如下所示(此處以趙雷的歌曲《成都》為例):

很明顯歌詞前面有歌詞呈現的時間,對于我們來說其屬于雜質資訊,因此需要利用正則運算式進行匹配,誠然,正則運算式并不是唯一的方法,小伙伴們也可以采取切片的方式或者其他方法進行資料清洗,在此就不贅述了,
得到歌詞之后便將其寫入到檔案中去,并存入到本地檔案中,代碼如下:

現在只要我們運行程式,輸入歌手的ID之后,程式將自動把該歌手的所唱歌曲的歌詞抓取下來,并存到本地中,如本例中趙雷的ID是6731,輸入數字6731之后,趙雷的歌詞將會被抓取到,如下圖所示:

之后我們就可以在腳本程式的同一目錄下找到生成的歌詞文本,歌詞就被順利的爬取下來了,
相信大家對網易云歌詞爬取已經有了一定的認識了,不過easier said than down,小編建議大家動手親自敲一下代碼,在實踐中你會學的更快,學的更多的,
這篇文章教會大家如何采集網易云歌詞,那網易云歌曲如何采集呢?且聽小編下回分解~~~
想學習更多Python網路爬蟲與資料挖掘知識,可前往專業網站:http://pdcfighting.com/
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/146284.html
標籤:Python
