zoukankan      html  css  js  c++  java
  • 我用Python爬取网易云音乐上的Hip-hop歌单,分析rapper如何押韵

    缘起

    《中国有嘻哈》这个节目在这个夏天吸引了无数的目光,也让嘻哈走进了大众的视野。作为我今年看的唯一一个综艺节目,它对我的影响也蛮大。这个夏天,我基本都在杭州度过,在上下班的taxi上,我几乎都在刷这个节目,最后可以说是看了好几遍。同时,也了解了flow、punchline、diss、酷炫的双押、三押等等专业词汇。

    我用Python爬取网易云音乐上的Hip-hop歌单,分析rapper如何押韵

    这其中,我尤其对押韵感兴趣。我在想,如果,我把嘻哈歌手唱的所有押韵的词汇都拿下来,然后只要给一个关键词,就能随时随地来一段儿押韵的FreeStyle,是不是很炫酷~

    我用Python爬取网易云音乐上的Hip-hop歌单,分析rapper如何押韵

    大概思路

    整体的思路很清晰,就是

    歌单 -> 歌曲(歌词) -> 分词词库、拼音 -> 韵脚 -> 随时随地的FreeStyle

    网易云音乐网站爬取数据

    首先进入网易云歌单页面,分类选择“说唱”:

    我用Python爬取网易云音乐上的Hip-hop歌单,分析rapper如何押韵

    可以看到网友们整理的说唱的歌单都在这里啦~对所有的歌单页面爬取,得到说唱歌单list,共1275张歌单:

    我用Python爬取网易云音乐上的Hip-hop歌单,分析rapper如何押韵

    进入其中一个歌单,有该歌单的歌曲页面:

    我用Python爬取网易云音乐上的Hip-hop歌单,分析rapper如何押韵

    对所有歌单的歌曲页面进行爬取,得到歌曲list, 共得到1W+首歌曲

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

    我用Python爬取网易云音乐上的Hip-hop歌单,分析rapper如何押韵

    当然,网易云还是做了一些反爬策略,刚开始测试的时候,我的真实IP就被拉黑了。返回大量503:

    我用Python爬取网易云音乐上的Hip-hop歌单,分析rapper如何押韵

    于是,找了一组代理IP,并且对爬虫进行了限速,绕过了反爬机制。

    爬取过程gif:

    我用Python爬取网易云音乐上的Hip-hop歌单,分析rapper如何押韵

    这样大概过去了几个小时,1W+的歌词就都到手啦!

    数据处理 (分词,拼音解析,获取双押、三押)

    接着是将每首歌的歌词进行分词,使用开源的结巴分词进行并行分词,使用举例如下:

    我用Python爬取网易云音乐上的Hip-hop歌单,分析rapper如何押韵

    可以看到这句话的切分结果还是让人满意的。

    结巴分词还可以对一段词分词后进行统计:

    我用Python爬取网易云音乐上的Hip-hop歌单,分析rapper如何押韵

    这样就可以对一篇文档进行分词及统计计数。于是我把每首歌都进行分词,把结果扔到了redis的zset结构中,出现次数记为score。完成之后,我基本就获取了整个嘻哈歌单的所有歌曲的全部词库。

    接下来的问题是,如何将词库里的词转为拼音呢?开源的xpinyin解决了这个问题,使用举例如下:

    我用Python爬取网易云音乐上的Hip-hop歌单,分析rapper如何押韵

    xpinyin识别出了火锅底料对应的拼音组成。

    那么韵脚又是什么东西呢?

    我用Python爬取网易云音乐上的Hip-hop歌单,分析rapper如何押韵

    拿 Jony-J的 《套路》举例, 迈步(mai-bu)、态度(tai-du)、外露(wai-lu)、带路(dai-lu), 其中的韵脚是 ai-u。

    那么我该怎么获取词的韵脚呢?经过观察,我发现可以用 “aeiou” 作为字的分界, 取当前以及后面的部分为韵脚(这个其实比标准押韵要严格)

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

    词云

    用嘻哈音乐里的词去生成词云,可以直观的看到嘻哈歌手们歌里主要在唱些什么:

    我用Python爬取网易云音乐上的Hip-hop歌单,分析rapper如何押韵

    来段儿FreeStyle吧

    前戏已经做足了,现在,我想要以”炒饭“为话题来一段儿FreeStyle(灵感来源于PGONE的炒面FreeStyle),于是我先搜了”炒饭“:

    我用Python爬取网易云音乐上的Hip-hop歌单,分析rapper如何押韵

    有很多双押的词,那我就用这些词来一段儿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的功能。

    欢迎关注我的微信公众号“芦阳以为”~

    微信扫一扫
    关注该公众号

  • 相关阅读:
    [MacOS]修改Wifi默认共享网段
    [CentOS7]升级OpenSSL至1.1.1
    [Linux]checking for libevent support... configure: error: Unable to use libevent (libevent check failed)
    [CentOS7]team模式切换
    HDU 5416 CBR and tree
    CodeForces 374D Inna and Sequence
    HDU 5981 Guess the number
    题目清单
    HDU 5510 Bazinga
    KMP & AC自动机
  • 原文地址:https://www.cnblogs.com/leoyoung1991/p/7625839.html
Copyright © 2011-2022 走看看