齐一都在唱什么呢+歌词词云分析
来源:互联网 发布:欧楷笔法 知乎 编辑:程序博客网 时间:2024/06/10 05:23
python版本 3.6.2
如果你是民谣控,应该听过齐叔的歌吧!那首经典的[这个年纪]但我的女人呢~但我的女人呢~ 当初听到这首歌的时候就深深的爱上,可谓真是有毒呀!
作为齐叔的歌迷,必须要分析一下齐叔呀!那么齐叔都在唱些什么呢?想办法获取所有齐叔的歌的歌词,发现酷我音乐刚好有齐叔所有音乐还包括歌词。
这下有了目标,接下来就是先拿数据啦!
引用库文件
# -*-coding:utf-8-*-import requestsimport refrom requests import RequestExceptionfrom bs4 import BeautifulSoupimport codecsfrom os import pathimport numpy as npfrom PIL import Imageimport jiebafrom wordcloud import WordCloud
获取整个网页内容
def get_page(url): Headers = { 'Host':'www.kuwo.cn', 'User - Agent':'Mozilla / 5.0(WindowsNT10.0;Win64;x64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 60.0.3112.101Safari / 537.36' } try: response = requests.get(url,headers=Headers) if response.status_code == 200: return response.text return None except RequestException: print('请求失败!') return None
解析页面提取所有歌曲的链接
def parse_page(html): soup = BeautifulSoup(html,'lxml') list = soup.find('div',attrs={'class':'geci'}) lsoup = BeautifulSoup(str(list),'lxml') count = -1 music_url = [] for x in lsoup.find_all('a'): count = count+1 if count%2==0: music_url.append(x) #输出music_url #正则表达式提取歌曲链接和歌名 regex = '<a href="(.*?)".*?>(.*?)</a>' pattern = re.compile(regex, re.S) items = re.findall(pattern, str(music_url)) # 先传入规则,在传需要在匹配源 url = [] for item in items: url.append(item[0]) # print(item[0],item[1]) #返回歌曲链接结果 return url
获取每个链接对于的歌曲歌词
def get_lrc(url): response = requests.get(url=url) # http://www.kuwo.cn/geci/a_285345/ bs = BeautifulSoup(response.text, 'lxml') # 使用select方法获得的节点可能不止一个,所以返回的类型是个list # 异常处理 http://www.kuwo.cn/geci/l_14392025 《这个年纪 - 伴奏》歌词 — 齐一 没有歌词会报错, try: lyric = bs.select('div#lrc_yes')[0] if lyric!=None: for item in lyric.strings: # print(item) #获取每一句歌词并写入文件 write_file(item) except Exception: print('当前歌曲没有歌词,歌曲链接为',url)
写入文件
def write_file(content): with open('齐一.txt','a') as f: f.write(content) f.flush() f.close()
制作词云
def draw_wordcloud(): with codecs.open('齐一.txt',encoding='utf-8') as f: comment_text = f.read() cut_text = " ".join(jieba.cut(comment_text)) # 将jieba分词得到的关键词用空格连接成为字符串 d = path.dirname(__file__) # 当前文件文件夹所在目录 color_mask = np.array(Image.open(path.join(d, "齐一.png"))) # 读取背景图片 cloud = WordCloud(font_path=path.join(d,'simsun.ttc'), # 字体文件 这个字体window自带有 可以自行更换 background_color='white', # 设置背景颜色 mask=color_mask, # 设置背景图片 max_words=2000, # 设置最大显示的字数 random_state=50, # 设置有多少种随机生成状态,即有多少种配色方案 max_font_size=100) # 设置字体最大值 word_cloud = cloud.generate(cut_text) # 产生词云 word_cloud.to_file("pjl_cloud.jpg") #生成的文件
执行方法操作
if __name__ == '__main__': #歌单列表网址 url = 'http://www.kuwo.cn/geci/a_285345/' #获取所有歌曲网址内容 html = get_page(url) #解析网页,提取所有歌曲链接 music_url = parse_page(html) #循环爬取 for url in music_url: print('正在爬取',url) #获取歌词 lrc = get_lrc(url) #生成词云 draw_wordcloud()
效果图
歌词文件及背景图片下载链接:http://pan.baidu.com/s/1mhRSI96 密码:o7ky
阅读全文
0 0
- 齐一都在唱什么呢+歌词词云分析
- 我分析了42万字歌词,就为了搞清楚民谣歌手们在唱些什么
- 我分析了42万字歌词,就为了搞清楚民谣歌手们在唱些什么
- 大数据分析42万字的歌词,为了搞清楚民谣歌手们在唱些什么
- 不同阶层数据分析师都在做什么呢
- 到底在坚持什么呢?
- 最近在做什么呢
- 20121011在期待什么呢
- 曲波在想什么呢
- 人的一生在追求什么呢?...
- 我们这个时代的年轻人在想什么呢?
- 人的一生,到底在追求什么呢?
- 最近在做什么呢,稍微总结一把
- 测试人员的脑子里到底在想什么呢
- 人的一生,到底在追求什么呢?
- 在什么时间更新站内文章最好呢
- 在什么时间更新站内文章最好呢
- 2013年元旦,大家都在做什么呢
- 左偏树简介(洛谷P3377题解)
- Solr区间查询背后原理
- 分治:循环赛日程表(递归+非递归)
- android7.0 电源(Power)键流程
- java 设计模式
- 齐一都在唱什么呢+歌词词云分析
- [DP]Codeforces 743E Vladik and cards
- UI游戏框架(一)
- luogu3383 线性筛模板
- Jetty第一次访问没有首页
- Codeforces 864D
- JZOJ5385. 【NOIP2017提高A组模拟9.23】Carry
- 【BZOJ】Tyvj 1729 文艺平衡树 Splay
- hashcode是什么意思?