故事的起因是上周六看《中国好声音》,一个周杰伦战队的学员用人工智能写的歌词,于是乎,我也有了这个想法,代码的主题思路是看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:breaktoken = RhymeDct.get(i, None)if token:r.append(token)breaki = 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+1else:result.update({key:1})f.close()print(result) 

第四步:程序入口

key=input("请输入关键词:")
str=_analysis_words(key)
print("匹配押韵的词:")
Findkey(str)

第五步:创作自己的 FreeStyle

# hello 大家好,我的名字叫离岛
# 没事爱在博客写写,这感觉让我惬惬
# 写代码不是男生的事,女生不是只能做测试
# 热爱编码,没有办法
# 他们都叫我是热爱编码的Coding女生

作者:离岛

出处:https://segmentfault.com/a/1190000015932069

转载于:https://www.cnblogs.com/reboot51/p/9448886.html

Python抓取歌词自制FreeStyle相关推荐

  1. python爬虫精进第5关前5页歌词爬-Python抓取歌词自制FreeStyle

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

  2. 手把手教你入侵网站修改数据_手把手教你使用Python抓取QQ音乐数据(第四弹)...

    [一.项目目标] 通过手把手教你使用Python抓取QQ音乐数据(第一弹)我们实现了获取 QQ 音乐指定歌手单曲排行指定页数的歌曲的歌名.专辑名.播放链接. 通过手把手教你使用Python抓取QQ音乐 ...

  3. 手把手教你使用Python抓取QQ音乐数据!

    [一.项目目标] 通过手把手教你使用Python抓取QQ音乐数据(第一弹)我们实现了获取 QQ 音乐指定歌手单曲排行指定页数的歌曲的歌名.专辑名.播放链接. 通过手把手教你使用Python抓取QQ音乐 ...

  4. python爬取qq音乐歌曲链接为什么播放不出来_手把手教你使用Python抓取QQ音乐数据(第一弹)...

    原标题:手把手教你使用Python抓取QQ音乐数据(第一弹) [一.项目目标] 获取 QQ 音乐指定歌手单曲排行指定页数的歌曲的歌名.专辑名.播放链接. 由浅入深,层层递进,非常适合刚入门的同学练手. ...

  5. 手把手教你使用Python抓取QQ音乐数据(第四弹)(文末赠书)

    点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 千里之行,始于足下. [一.项目目 ...

  6. 如何用python抓取qq音乐_手把手教你使用Python抓取QQ音乐数据(第三弹)-阿里云开发者社区...

    [一.项目目标] 通过手把手教你使用Python抓取QQ音乐数据(第一弹)我们实现了获取 QQ 音乐指定歌手单曲排行指定页数的歌曲的歌名.专辑名.播放链接. 通过手把手教你使用Python抓取QQ音乐 ...

  7. python音乐的数据抓取与分析_手把手教你使用Python抓取QQ音乐数据!

    [一.项目目标] 通过手把手教你使用Python抓取QQ音乐数据(第一弹)我们实现了获取 QQ 音乐指定歌手单曲排行指定页数的歌曲的歌名.专辑名.播放链接. 通过手把手教你使用Python抓取QQ音乐 ...

  8. python代码案例详解-我用Python抓取了7000 多本电子书案例详解

    安装 安装很简单,只要执行: pip install requests-html 就可以了. 分析页面结构 通过浏览器审查元素可以发现这个电子书网站是用 WordPress 搭建的,首页列表元素很简单 ...

  9. python抓取头条文章

    python抓取头条美文并存储到mongodb # Author:song from multiprocessing import Pool from urllib.parse import urle ...

最新文章

  1. oracle修改memory,Oracle 修改 MEMORY_TARGET
  2. 唐岩自述奋斗史:从娄底青年到陌陌上市
  3. Django从理论到实战(part17)--模板概述
  4. wps两列数据分别作为xy轴_0.4 秒,完成两列数据核对
  5. npm install packagename 安装失败的解决办法
  6. php 实现跨站下载图片,一个图片url访问后直接下载怎样实现
  7. 取消Pycharm双击shift弹出来的搜索框
  8. CS20SI-tensorflow for research笔记: Lecture3
  9. 电商ERP软件、订单管理系统、库存管理系统
  10. DB2中修改表字段类型或者长度
  11. Ubuntu下安装JRTPLIB
  12. 信息安全从业者工作规划及能力建设
  13. 【无人机】【2008.09】用于小型无人机目标定位的轨迹优化
  14. 爬虫 页面元素变化_爬虫项目案例讲解 案例二:定位、爬虫、定位页面元素、分别定位、简单处理抓取数据(有总结)...
  15. linux ext4 格式化工具,ext4格式化软件 mkfs.ext4 快速格式化
  16. Java工作5年的迷茫,是否要转互联网?
  17. Linux常用命令(面试)
  18. LaTeX调整公式中部分字号及行距
  19. Python读取csv文件出现\ufeff
  20. java 支付宝 第三方即时到账支付 接口

热门文章

  1. Android使用HereMap教程
  2. 十六、Swift 可选值链条 Optional Chaining
  3. 阿里云 CDN+Oss 解决方案
  4. 使用Python下载flbook.com.cn电子书
  5. 归一化方法(Normalization Method)
  6. 内蒙古对口升学2018年计算机,2018年届对口升学考试计算机专业月考三试题.doc
  7. 有个程序猿很忧桑:一个命令rm -rf/ ,他把整个公司删没了...
  8. 【Devc++】双人跑酷小游戏1.3
  9. 经济观察评论:现在是筑底时期, 对复苏仍可以保持乐观!]
  10. STM32+ESP8266+MQTT连接阿里云服务器(一、烧写MQTT固件)