词云工具WordCloud

  1. 使用 pip install wordcloud安装工具后就可以创建词云,构造方法主要的构造参数如下:

wc = WordCloud(background_color='white',# 设置背景颜色mask=backgroud_Image,# 设置背景图片font_path='./SimHei.ttf',  # 设置字体,针对中文的情况需要设置中文字体,否则显示乱码max_words=100, # 设置最大的字数stopwords=STOPWORDS,# 设置停用词max_font_size=150,# 设置字体最大值width=2000,# 设置画布的宽度height=1200,# 设置画布的高度random_state=30# 设置多少种随机状态,即多少种颜色
)
  1. 创建好 WordCloud 类之后,就可以使用 wordcloud=generate(text) 方法生成词云,传入的参数 text 代表你要分析的文本
  2. 最后使用 wordcloud.tofile(“a.jpg”) 函数,将得到的词云图像直接保存为图片格式文件。
  3. 也可以使用Matplotlib进行显示
plt.imshow(wordcloud).
plt.axis("off")
plt.show()

歌词制作词云

  1. 我们主要使用 Python 爬虫获取 HTML,用 XPath 对歌曲的 ID、名称进行解析,
  2. 通过网易云音乐的 API 接口获取每首歌的歌词,将所有的歌词合并得到一个变量。
  3. 创建 WordCloud 词云类,分析得到的歌词文本,
  4. 可视化展示。
# -*- coding:utf-8 -*-
# 网易云音乐 通过歌手ID,生成该歌手的词云
import requests
import sys
import re
import os
from wordcloud import WordCloud
import matplotlib.pyplot as plt
import jieba
from PIL import Image
import numpy as np
from lxml import etreeheaders = {'Referer'   :'http://music.163.com','Host'      :'music.163.com','Accept'   :'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8','User-Agent':'Chrome/10'}# 得到某一首歌的歌词
def get_song_lyric(headers, lyric_url):res = requests.request('GET', lyric_url, headers=headers)if 'lrc' in res.json():lyric = res.json()['lrc']['lyric']new_lyric = re.sub(r'[\d:.[\]]','',lyric)return new_lyricelse:return ''print(res.json())# 去掉停用词
def remove_stop_words(f):stop_words = ['作词', '作曲', '编曲', 'Arranger', '录音', '混音', '人声', 'Vocal', '弦乐', 'Keyboard', '键盘', '编辑', '助理', 'Assistants', 'Mixing', 'Editing', 'Recording', '音乐', '制作', 'Producer', '发行', 'produced', 'and', 'distributed']for stop_word in stop_words:f = f.replace(stop_word, '')return f# 生成词云
def create_word_cloud(f):print('根据词频,开始生成词云!')f = remove_stop_words(f)cut_text = " ".join(jieba.cut(f,cut_all=False, HMM=True))wc = WordCloud(font_path="./wc.ttf",max_words=100,width=2000,height=1200,)print(cut_text)wordcloud = wc.generate(cut_text)# 写词云图片wordcloud.to_file("wordcloud.jpg")# 显示词云文件plt.imshow(wordcloud)plt.axis("off")plt.show()# 得到指定歌手页面 热门前50的歌曲ID,歌曲名
def get_songs(artist_id):page_url = 'https://music.163.com/artist?id=' + artist_id# 获取网页HTMLres = requests.request('GET', page_url, headers=headers)# 用XPath解析 前50首热门歌曲html = etree.HTML(res.text)href_xpath = "//*[@id='hotsong-list']//a/@href"name_xpath = "//*[@id='hotsong-list']//a/text()"hrefs = html.xpath(href_xpath)names = html.xpath(name_xpath)# 设置热门歌曲的ID,歌曲名称song_ids = []song_names = []for href, name in zip(hrefs, names):song_ids.append(href[9:])song_names.append(name)print(href, '  ', name)return song_ids, song_names# 设置歌手ID,李健的ID
artist_id = '3695'
[song_ids, song_names] = get_songs(artist_id)# 所有歌词
all_word = ''
# 获取每首歌歌词
for (song_id, song_name) in zip(song_ids, song_names):# 歌词API URLlyric_url = 'http://music.163.com/api/song/lyric?os=pc&id=' + song_id + '&lv=-1&kv=-1&tv=-1'lyric = get_song_lyric(headers, lyric_url)all_word = all_word + ' ' + lyricprint(song_name)#根据词频 生成词云
create_word_cloud(all_word)
  1. get_songs 函数,得到指定歌手页面中热门前 50 的歌曲 ID,歌曲名。在这个函数里,使用 requests.request 函数获取歌手页面的 HTML。这里需要传入指定的请求头(headers),否则获取不到完整的信息。然后用 XPath 解析并获取指定的内容,这个模块中,我想获取的是歌曲的链接和名称。
  2. 其中歌曲的链接类似 /song?id=536099160 这种形式,你能看到字符串第 9 位之后,就是歌曲的 ID。
  3. 一般来说,XPath 解析 99% 的可能都是以 // 开头,因为你需要获取所有符合这个 XPath 的内容。我们通过分析 HTML 代码,能看到一个关键的部分:id=‘hotsong-list’。这个代表热门歌曲列表,也正是我们想要解析的内容。我们想要获取这个热门歌曲列表下面所有的链接,XPath 解析就可以写成 //*[@id=‘hotsong-list’]//a。然后你能看到歌曲链接是 href 属性,歌曲名称是这个链接的文本。
  4. 获得歌曲 ID 之后,我们还需要知道这个歌曲的歌词,对应代码中的 get_song_lyric 函数,在这个函数里调用了网易云的歌词 API 接口,比如http://music.163.com/api/song/lyric?os=pc&id=536099160&lv=-1&kv=-1&tv=-1
  5. 能看到歌词文件里面还保存了时间信息,我们需要去掉这部分。因此我使用了 re.sub 函数,通过正则表达式匹配,将[]中数字信息去掉,方法为 re.sub(r’[\d:.[]]’,’’,lyric)
  6. 我们还需要设置一些歌词中常用的停用词,比如“作词”“作曲”“编曲”等,编写 remove_stop_words 函数,将歌词文本中的停用词去掉
  7. 最后编写 create_word_cloud 函数,通过歌词文本生成词云文件

网易云爬取歌词进行歌词词云可视化相关推荐

  1. 抓取网易云音乐歌曲热门评论生成词云(转)

    非原创作品,转载自:http://blog.csdn.net/marksinoberg/article/details/70809830 前言 网易云音乐一直是我向往的"神坛",听 ...

  2. 网易云爬取首页歌单里的所有歌曲

    网易云爬取首页歌单里的所有歌曲 前言:本文章仅供个人参考使用,非商用用途,其中参考了其他的文献资料,如有不妥之处,请联系本人邮箱:wurenjie8@163.com 思路:通过首页URL获取所有首页的 ...

  3. 网易云音乐评论生成Wordcloud(词云)

    网易云音乐评论生成Wordcloud(词云) 1 前言 1.1 目的 本篇主要介绍网易云音乐爬取歌曲知足的评论生成词云,可以结合新浪微博生成词云学习. 1.2 工具 Wordcloud 词云(pip ...

  4. python爬取微博数据词云_用Python爬取微博数据生成词云图片

    原标题:用Python爬取微博数据生成词云图片 欢迎关注天善智能 hellobi.com,我们是专注于商业智能BI,大数据,数据分析领域的垂直社区,学习.问答.求职,一站式搞定! 对商业智能BI.大数 ...

  5. 【python】爬虫入门:代理IP池的使用、文件的写入与网易云爬取时的注意事项

    一.概述 在两天前实现利用爬虫爬取网易云音乐用户的各类公开信息之后,我对现有爬虫进行了功能上的增加.主要有: ①.使用代理IP池防止IP被封: ②.将爬取用户的听歌记录.歌单.关注.粉丝这四类数据的代 ...

  6. 爬虫网易云音乐,热评,词云,prettytable。

    乐爬网易云 热门评论 第三方库 api接口 获取评论 解析数据 显示数据 词云 第三方库 制作流程 词云代码 词云 排行榜 api PrettyTable 安装 方法 代码 表格 全部代码 你好!此篇 ...

  7. 英雄联盟《双城之战》视频弹幕爬取并分析输出词云

    目前,拳头制作的英雄联盟首部动画作品<双城之战>在腾讯视频独家播出.而事实再次证明,拳头是一家被游戏耽误的动画公司,<双城之战>首映非常成功,豆瓣评分9.2,5星评价占67.5 ...

  8. python爬取豆瓣影评生成词云的课程设计报告_简单爬取《小丑》电影豆瓣短评生成词云...

    导语 在前段时间看了杰昆菲尼克斯的小丑电影,心里很好奇大部分观众看完这部电影之后对此有什么评价,然后看了看豆瓣短评之后,觉得通过python把短评中出现最多的单词提取出来,做成一张词云,看看这部电影给 ...

  9. python爬取豆瓣影评生成词云的课程设计报告_Python爬取豆瓣影评,生成词云图,只要简单一步即可实现。...

    最近看了一部电影<绣春刀>,里面的剧情感觉还不错,本文爬取的是绣春刀电影的豆瓣影评,1000个用户的短评,共5W多字.用jieba分词,对词语的出现频率进行统计,再通过wordcloud生 ...

  10. Python3.6+jieba+wordcloud 爬取豆瓣影评生成词云

    在上一篇介绍了如何通过Python爬虫抓取豆瓣电影榜单.Python3.6+Beautiful Soup+csv 爬取豆瓣电影Top250 此篇博客主要抓取豆瓣某个电影的影评,利用jieba分词和wo ...

最新文章

  1. 1分钟10万字大法:量子波动速读、蒙眼翻书穿针,这是席卷15省的最新智商税...
  2. RHCE 学习笔记(7) 进程管理
  3. Git同步本地项目文件到github
  4. hub设备_USB不够用,一个HUB全部搞定!ORICO 群控USB扩展器
  5. AI:人工智能的多模态融合模型的简介、发展以及未来趋势
  6. EM算法和GMM(上)
  7. C#中await/async闲说
  8. java中你知道这四种代码块吗?
  9. Linux 多线程压缩/解压缩
  10. 一起谈.NET技术,asp.net控件开发基础(13)
  11. 测量不确定度matlab,基于MATLAB用蒙特卡洛法评估测量不确定度简介,目录书摘
  12. 计算机编码中进制的区别,计算机中的进制和编码(转载)
  13. c语言编写成绩管理系统代码,C语言学生成绩管理系统源代码
  14. bp神经网络的应用案例,bp神经网络数学模型
  15. 金融级云服务 平安云赋能保险业创新发展
  16. python三国演义人物 统计分析_《python三国演义》人物统计(一),Python,出场,上...
  17. Python小白的数学建模课-19.网络流优化问题
  18. 初中学历程序员面试被HR吐槽,初中学历还有要月薪3万5,到底是学历重要还是能力重要?...
  19. oracle导出辅助账明细,AO2011导入国库集中支付系统3.0的辅助账
  20. Kafka-Eagle中的ke数据库创建

热门文章

  1. 用C++编写的小游戏源代码
  2. 贪吃蛇游戏设计算法及创新
  3. 黑灰产技术手段不断“进阶”,如何防御双十二“羊毛党”?
  4. 什么是 开发环境、测试环境、生产环境、UAT环境、仿真环境
  5. 2015Mac版飞秋无法接受文件夹!!!
  6. Pycharm 主题设置和修改
  7. 一种应用于GPS反欺骗的基于MLE的RAIM改进方法
  8. 中鸣机器人走黑线_乐高机器人三光感走黑线
  9. 2005-2018 年软考软件设计师 真题分享
  10. MybatisX代码自动生成