1. 程式人生 > >我用Python爬取網易雲音樂上的Hip-hop歌單,分析rapper如何押韻

我用Python爬取網易雲音樂上的Hip-hop歌單,分析rapper如何押韻

line gone 謠言 大致 -i 態度 大眾 其中 當前

緣起

《中國有嘻哈》這個節目在這個夏天吸引了無數的目光,也讓嘻哈走進了大眾的視野。作為我今年看的唯一一個綜藝節目,它對我的影響也蠻大。這個夏天,我基本都在杭州度過,在上下班的taxi上,我幾乎都在刷這個節目,最後可以說是看了好幾遍。同時,也了解了flow、punchline、diss、酷炫的雙押、三押等等專業詞匯。

技術分享

這其中,我尤其對押韻感興趣。我在想,如果,我把嘻哈歌手唱的所有押韻的詞匯都拿下來,然後只要給一個關鍵詞,就能隨時隨地來一段兒押韻的FreeStyle,是不是很炫酷~

技術分享

大概思路

整體的思路很清晰,就是

歌單 -> 歌曲(歌詞) -> 分詞詞庫、拼音 -> 韻腳 -> 隨時隨地的FreeStyle

網易雲音樂網站爬取數據

首先進入網易雲歌單頁面,分類選擇“說唱”:

技術分享

可以看到網友們整理的說唱的歌單都在這裏啦~對所有的歌單頁面爬取,得到說唱歌單list,共1275張歌單:

技術分享

進入其中一個歌單,有該歌單的歌曲頁面:

技術分享

對所有歌單的歌曲頁面進行爬取,得到歌曲list, 共得到1W+首歌曲

取得每首歌曲的songId,調用歌詞API (http://music.163.com/api/song/lyric?os=pc&id=509135896&lv=-1&kv=-1&tv=-1) 得到歌詞:

技術分享

當然,網易雲還是做了一些反爬策略,剛開始測試的時候,我的真實IP就被拉黑了。返回大量503:

技術分享

於是,找了一組代理IP,並且對爬蟲進行了限速,繞過了反爬機制。

爬取過程gif:

技術分享

這樣大概過去了幾個小時,1W+的歌詞就都到手啦!

數據處理 (分詞,拼音解析,獲取雙押、三押)

接著是將每首歌的歌詞進行分詞,使用開源的結巴分詞進行並行分詞,使用舉例如下:

技術分享

可以看到這句話的切分結果還是讓人滿意的。

結巴分詞還可以對一段詞分詞後進行統計:

技術分享

這樣就可以對一篇文檔進行分詞及統計計數。於是我把每首歌都進行分詞,把結果扔到了redis的zset結構中,出現次數記為score。完成之後,我基本就獲取了整個嘻哈歌單的所有歌曲的全部詞庫。

接下來的問題是,如何將詞庫裏的詞轉為拼音呢?開源的xpinyin解決了這個問題,使用舉例如下:

技術分享

xpinyin識別出了火鍋底料對應的拼音組成。

那麽韻腳又是什麽東西呢?

技術分享

拿 Jony-J的 《套路》舉例, 邁步(mai-bu)、態度(tai-du)、外露(wai-lu)、帶路(dai-lu), 其中的韻腳是 ai-u。

那麽我該怎麽獲取詞的韻腳呢?經過觀察,我發現可以用 “aeiou” 作為字的分界, 取當前以及後面的部分為韻腳(這個其實比標準押韻要嚴格)

比如,火鍋底料 -> huo-guo-di-liao -> uo-uo-i-iao

詞雲

用嘻哈音樂裏的詞去生成詞雲,可以直觀的看到嘻哈歌手們歌裏主要在唱些什麽:

技術分享

來段兒FreeStyle吧

前戲已經做足了,現在,我想要以”炒飯“為話題來一段兒FreeStyle(靈感來源於PGONE的炒面FreeStyle),於是我先搜了”炒飯“:

技術分享

有很多雙押的詞,那我就用這些詞來一段兒rap吧!

視頻在此,前方核能!

https://v.qq.com/x/page/q05574kytoi.html

炒飯FreeStyle (PGONE風格,我最屌,你們都是傻逼)

beat: Rap God (Instrumental)

yo yo yo, whatsup.

This is MC YOUNG.

炒飯FreeStyle

LISTEN.

drop the beat DJ.

yo, yo, yo, yo, listen, listen, listen, check it.

Ready Ready Ready Ready Ready Ready Ready

不要聽信那些謠言,

這只是對你的考驗。

這場show我才是導演,

AKA你的老板。 ya ya

你若是再搗蛋,

年過三旬的老漢,

送你豪華的套餐,

滾回家去吃炒飯。

yeah 哥們兒的verse就是這麽高產,

yeah 不像那些個盜版的hater讓人討厭,

也不好看,只會搗蛋,

還試圖高攀那靠山, ya ya

攀不上了只會說好難,

到最後發現對面的我才最耀眼。 skr skr

誒, 你問我是哪個,

look at me,

老子一身正氣浩然,

銅鑼灣的陳浩南。 punchline

雙押*19 達成 !

這段rap用 Final Cut Pro X 剪切視頻,做的字幕。第一次做視頻,大家見諒哈哈。

挖坑

挖個坑,下次寫一個輸入一個詞,能實現以這個詞為核心自動生成一段意思大致通順的押韻的rap的功能。

歡迎關註我的微信公眾號“蘆陽以為”~

技術分享

微信掃一掃
關註該公眾號

我用Python爬取網易雲音樂上的Hip-hop歌單,分析rapper如何押韻