资讯专栏INFORMATION COLUMN

Python抓取歌词自制FreeStyle

Pines_Cheng / 492人阅读

摘要:故事的起因是上周六看中国好声音一个周杰伦战队的学员用人工智能写的歌词,于是乎,我也有了这个想法,代码的主题思路是看先生的文章,虽然最后不能写出一首歌,但是押韵脚这事情分分钟搞定了主题的思路,就是先抓取很多首歌曲的歌词,利用分词后,将分好的词

故事的起因是上周六看《中国好声音》,一个周杰伦战队的学员用人工智能写的歌词,于是乎,我也有了这个想法,代码的主题思路是看Crossin先生的文章,虽然最后不能写出一首歌,但是押韵脚这事情分分钟搞定了

主题的思路,就是先抓取很多首歌曲的歌词,利用jieba分词后,将分好的词按照押韵表进行分类,最后匹配查询就可以了

准备一:押韵表

这个地方可以去网上搜押韵表

#引用各种需要的库
import requests
import jieba
import re
from xpinyin import Pinyin
p = Pinyin()

RhymeIndex = [("1", ["a", "ia", "ua"]), ("2", ["ai", "uai"]), ("3", ["an", "ian", "uan"]),
              ("4", ["ang", "iang", "uang"]), ("5", ["ao", "iao"]), ("6", ["e", "o", "uo"]), ("7", ["ei", "ui"]),
              ("8", ["en", "in", "un"]), ("9", ["eng", "ing", "ong", "iong"]), ("10", ["er"]), ("11", ["i"]),
              ("12", ["ie", "ye"]), ("13", ["ou", "iu"]), ("14", ["u"]), ("16", ["ue"]), ("15", ["qu", "xu", "yu"])]

RhymeDct = {"ui": "7", "uan": "3", "ian": "3", "iu": "13", "en": "8", "ue": "16", "ing": "9", "a": "1", "ei": "7",
            "eng": "9", "uo": "6", "ye": "12", "in": "8", "ou": "13", "ao": "5", "uang": "4", "ong": "9", "ang": "4",
            "ai": "2", "ua": "1", "uai": "2", "an": "3", "iao": "5", "ia": "1", "ie": "12", "iong": "9", "i": "11",
            "er": "10", "e": "6", "u": "14", "un": "8", "iang": "4", "o": "6", "qu": "15", "xu": "15", "yu": "15"}
准备二:分词对应押韵表编码

分好的词与押韵表对应起来,举个栗子,比如“没有”对应的是“7-13”,就等于你给每个词都贴了一个标签,这样你以后想搜索的时候,就可以根据标签找到这些词了

def _analysis_words(words):
        word_py =p.get_pinyin((u"{}".format(words)))
        lst_words = word_py.split("-")
        r = []
        for i in lst_words:
            while True:
                if not i:
                    break
                token = RhymeDct.get(i, None)
                if token:
                    r.append(token)
                    break
                i = i[1:]
        if len(r) == len(words):
            return "-".join(r)
# print(_analysis_words("兄弟"))
第一步:爬虫抓取歌词信息

这个地方数据爬取的越多,肯定你的词库就越壮大,后面分词也越高,我这里只爬取了3首歌曲的歌词,并且最后是存储到txt中,当然,放数据库里就更好了

def GetKeyword():
    #歌曲列表
    # url = "http://music.163.com/api/playlist/detail?id=808976784"
    # req = requests.get(url)
    # data = req.json()
    # print(data["result"]["tracks"] )
    # tracks =data["result"]["tracks"]  #歌曲列表
    tracks=["431795900","33850315","430053482"]
    #写入记事本文件
    with open("keyword.txt","a") as f:
        f.write("[")
        for i in tracks:
            print(111)
            #歌词
            # lrcurl = "http://music.163.com/api/song/lyric?os=pc&id="+str(i["id"])+"&lv=-1&kv=-1&tv=-1"
            lrcurl = "http://music.163.com/api/song/lyric?os=pc&id="+str(i)+"&lv=-1&kv=-1&tv=-1"
            lrcreq = requests.get(lrcurl)
            dt = lrcreq.json()
            lrc=re.sub(u"[.*?]", "", dt["lrc"]["lyric"])
            #jieba分词
            seg_list = list(jieba.cut(lrc, cut_all=True))
            for i in seg_list:
                #加入判断,只写入2个字组成的词
                if len(i)==2:
                    #写入格式:{"7-13":"追求"}
                    if _analysis_words(i)!=None:
                        f.write("{""+_analysis_words(i)+"":""+i+""},")
        f.write("]")
        f.close()
       
第二步:调用分词的方法
GetKeyword()
第三步:分析分词后的txt
def Findkey(str):
    result={}
    with open("keyword.txt", "r") as f:
        # print(f.readlines())
        list=eval(f.readlines()[0])
        for item in list:
            if item.get(str):
                key=item.get(str)
                number=result.get(key)
                #如果一个词出现多次,进行次数累加,用来表示频次
                if number !=None and number>=1:
                    result[key]=number+1
                else:
                    result.update({key:1})
        f.close()
        print(result) 
第四步:程序入口
key=input("请输入关键词:")
str=_analysis_words(key)
print("匹配押韵的词:")
Findkey(str)
第五步:创作自己的FreeStyle
# hello 大家好,我的名字叫离岛
# 没事爱在博客写写,这感觉让我惬惬
# 写代码不是男生的事,女生不是只能做测试
# 热爱编码,没有办法
# 他们都叫我是热爱编码的Coding女生

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/42173.html

相关文章

  • 零基础如何学爬虫技术

    摘要:楚江数据是专业的互联网数据技术服务,现整理出零基础如何学爬虫技术以供学习,。本文来源知乎作者路人甲链接楚江数据提供网站数据采集和爬虫软件定制开发服务,服务范围涵盖社交网络电子商务分类信息学术研究等。 楚江数据是专业的互联网数据技术服务,现整理出零基础如何学爬虫技术以供学习,http://www.chujiangdata.com。 第一:Python爬虫学习系列教程(来源于某博主:htt...

    KunMinX 评论0 收藏0
  • 一起用python做个炫酷音乐播放器,想听啥随便搜!【V2.0升级版,含源码及打包exe】

    摘要:自制一款炫酷音乐播放器,想听啥随便搜下面我们就介绍这个音乐播放器版本新加的部分功能制作过程。直接跳到文末获取源码及打包程序。双击列表页面中某一首歌曲,即可实现音乐播放功能。 ...

    leap_frog 评论0 收藏0
  • 小白都懂的Python爬虫之网易云音乐下载

    摘要:完整代码如下正在下载根据网易云歌曲的直接下载歌曲上安装爬取网易云歌曲源码地址 首发知乎:https://zhuanlan.zhihu.com/p/... 目标 偶然的一次机会听到了房东的猫的《云烟成雨》,瞬间迷上了这慵懒的嗓音和学生气的歌词,然后一直去循环听她们的歌。然后还特意去刷了动漫《我是江小白》,好期待第二季... 我多想在见你,哪怕匆匆一眼就别离... 好了,不说废话了。这次...

    SoapEye 评论0 收藏0

发表评论

0条评论

Pines_Cheng

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<