我从崖边跌落 落入星空辽阔 银河不清不浊 不知何以摆脱——谢春花《我从崖边跌落》

作为一名春花粉,决定用python,分析下春花歌词里的高频词语,以期找到有趣的规律。

1. 数据爬取

歌词来源:网易云谢春花热门26首

爬取完之后以txt格式存储

# 第一部分:爬取数据
import requests
import re
import os
import json
from bs4 import BeautifulSoup#发起响应
def get_html(url):headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36'}try:response = requests.get(url, headers=headers)html = response.contentreturn htmlexcept:print('request error')pass#函数:按照歌曲id,提取歌词内容
def download_by_music_id(music_id):lrc_url = 'http://music.163.com/api/song/lyric?'+'id='+str(music_id) + '&lv=1&kv=1&tv=-1'r = requests.get(lrc_url)json_obj = r.textj = json.loads(json_obj)try:lrc = j['lrc']['lyric']pat = re.compile(r'\[.*\]')lrc = re.sub(pat, "",lrc)lrc = lrc.strip()return lrcexcept:pass#函数:按照歌手id,发起请求,解析网页,提取歌曲id
def get_music_ids_by_musician_id(singer_id):singer_url = 'http://music.163.com/artist?id={}'.format(singer_id)r = get_html(singer_url)soupObj = BeautifulSoup(r,'lxml')song_ids = soupObj.find('textarea').textjobj = json.loads(song_ids)ids = {}for item in jobj:print(item['id'])ids[item['name']] = item['id']return ids# 创建文件夹,在文件夹下存储每首歌的歌词
# os.mkdir创建目录,os.chdir改变当前工作目录到指定的路径
def download_lyric(uid):try:os.mkdir(str(uid))except:passos.chdir(str(uid))music_ids = get_music_ids_by_musician_id(uid)for key in music_ids:text = download_by_music_id(music_ids[key])file = open(key+'.txt', 'a')file.write(key+'\n')file.write(str(text))file.close()if __name__ == '__main__':download_lyric(1039895)

2.     歌词分析

利用jieba分词包进行分词,用set()去掉每首歌里的重复的词(比如在一首歌里出现借我 借我 借我只按1次算),同时去掉停用词(如的、和、吗等无意义的虚词),统计词频,然后以词云图显示。

# 第二部分:词频分析import os
from collections import Counter
import  jieba
from wordcloud import WordCloud
import matplotlib.pyplot as plt
from scipy.misc import imread
from pylab import mpl#第一步:定义停用词库
def stopwordslist(filepath):stopwords = [line.strip() for line in open(filepath, 'r').readlines()]return stopwords
stopwords=stopwordslist('C:/Users/chen/PycharmProjects/stoplist.txt')# 第二步:读取文件,分词,生成all_words列表,用停用词检查后生成新的all_words_new
all_words=[]
outstr = ''
for filename in os.listdir('1039895'):with open('1039895/'+filename) as f:lyrics=f.read()data=jieba.cut(lyrics)all_words.extend(set(data))
for word in all_words:if word not in stopwords:if word != '\t':outstr += wordoutstr += " "
all_words_new= outstr.split(" ") #转成列表
#第三步:对all_words中的词计数,并按照词频排序
count=Counter(all_words_new)
result=sorted(count.items(), key=lambda x: x[1], reverse=True)
print(result)
#第四步,词云显示
#将频率变成字典
word_dic=dict(count.items())
# 使matplotlib模块能显示中文
mpl.rcParams['font.sans-serif'] = ['SimHei'] # 指定默认字体
mpl.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题
color_mask=imread('xinxing.jpg') #背景图
cloud=WordCloud(font_path='C:\Windows\Fonts\SIMYOU.TTF',width=600,height=480,background_color='black',mask=color_mask,max_words=350,max_font_size=150)
world_cloud=cloud.fit_words(word_dic)
world_cloud.to_file('chunhua.jpg')
plt.imshow(world_cloud)

谢春花式少女情怀,在每个洒满阳光的日子,藏一桩期盼,几许思,做一颗在春天开花的树,有生之年,做几场,忍几次,但一定会遇见你,然后把明天说与你听,不知你愿不愿

常用词——“心”:

11887:宠溺的笑 漏半拍

借我:借我怦然动如往昔

只道寻常:雨落时才想起那种

11887: 我想此刻的被你填满了一些

心空空:时而空空时而痛汹涌

 

常用词——“懂”

唱不了一首欢乐的歌:嘿 我想只有你我了

妄为:稠密的心思没几人能懂 到头来怕只把自己感动

心空空:说来不知你会不会

荒岛:我想让你我的固执

 

常用词——“遇见”、“相见”、“梦”

一棵会开花的树:但有生之年还好遇见

如果写不出好的和弦就该在洒满阳光的钢琴前一起吃布丁:这样慵懒的午后 转角书店遇见

我一定会爱上你:虽然我还没遇见你但我一定会爱上你

洛干的吻:期待每一次的相见

已是两条路上的人:不用停留 就要相见

只道寻常:相距远相见难不聚只散

俗人言:今生莫相见

我从崖边跌落:谁把美捕捉

新屋:把时间交给 温热的床 一同跌进

无终:胜握在掌 神魂摇荡 故事几章 一场

“如此幸福的一天。雾一早就散了,我在花园里干活。蜂鸟停在忍冬花上。这世上没有一样东西我想占有,我知道没有一个人值得我羡慕。任何我曾遭受的不幸,我都已忘记。想到故我今我同为一人并不使我难为情。在我身上没有痛苦。直起腰来,我望见蓝色的大海和帆影。” ——以米沃什的《礼物》结尾,have a sweet dream。

Python爬虫歌词及词频统计--(谢春花)相关推荐

  1. Python中文分词及词频统计

    Python中文分词及词频统计 中文分词 中文分词(Chinese Word Segmentation),将中文语句切割成单独的词组.英文使用空格来分开每个单词的,而中文单独一个汉字跟词有时候完全不是 ...

  2. 使用Python+NLTK实现英文单词词频统计

    使用Python+NLTK实现英文单词词频统计 使用PythonNLTK实现英文单词词频统计 应用场景 Fork Me 参考运行环境 流程步骤图 详细步骤 读取文件 过滤特殊符号以及还原常见缩写单词 ...

  3. Python爬虫网易云歌词及词频统计--(周杰伦top50)

    本篇博客是利用Python爬虫网易云音乐,并利用jieba分词,对歌词进行分词,然后分析周杰伦top50中最常出现的词语. 我们先尝试获取一首歌的歌词吧,比如等你下课这首歌 上面的id就是等你下课这首 ...

  4. python红楼梦人物词频统计_用 Python 分析《红楼梦》

    1 前言 两个月以来,我通过互联网自学了一些文本处理的知识,用自然语言处理和机器学习算法对<红楼梦>进行了一些分析.这个过程中我找到了一些有趣的发现,所以我想写一篇文章,既㲌与大家分享和讨 ...

  5. python红楼梦人物词频统计_通过数据挖掘能分析《红楼梦》各回的真伪吗?

    可以的.小智最近就尝试通过用机器学习的方法,分析了一下红楼梦后四十回的真伪. 以下内容引自小智的微信公众号,转载需申请授权. ------------------------------------- ...

  6. Python字典简单实现词频统计

    目录 问题引入: 原理: 基本流程: 词频统计 ①录入待统计的句子 ②分割为多个单词 ③创建字典 利用Python内置库快速实现词频统计 全部代码 普通方法 方法二:get()实现 内置库实现 Pyt ...

  7. 使用python进行字频统计和词频统计

    问题描述 读取给定的语料库,根据制表符'\t'划分其文本与标签,将获得的文本仅保留汉字部分,并按字划分,保存在列表中,至少使用一种方法,统计所有汉字的出现次数,并按照从高到低的顺序排序:至少使用一种方 ...

  8. Python实例分析——文本词频统计

    基于中国大学mooc网嵩天老师的<Python语言程序设计>课程实例 文章目录 一.数字文本 pi 二.英文文本 *Hamlet* 三.中文文本<三国演义> 一.数字文本 pi ...

  9. python爬虫餐饮行业数据分析统计服_Python数据分析实战,简单快速制作餐饮行业商业化报告...

    前些天有个朋友向我求救,他们公司最近要针对餐饮行业做数据分析,并为某些商家做出线上营销方案.但是他一头雾水,不知道该从哪方面下手. 我提醒他,是否先从商家的线上评价作为数据分析的入口例如美团.大众点评 ...

最新文章

  1. 一文了解迁移学习经典算法
  2. Android Dialog 系统样式讲解及透明背景
  3. jdk1.8之HashMap
  4. pandas的dataframe节省内存
  5. SQL工作笔记-达梦存储过程及时间触发器实现自动生成数据
  6. python有几大模块_Python的几个常用模块
  7. 关于javascript dom扩展:Selector API
  8. 38.django的路由系统
  9. win7 mysql zip包如何安装_MySql 5.7.31 win7 Zip压缩包配置教程
  10. 801机械设计2017题签
  11. ask调制matlab实验,ASK调制的matlab代码
  12. 软件设计师--中级 学习笔记(2)
  13. html批量打印保存到pdf,网页批量打印成PDF,并按条件合并成大PDF、生成页码
  14. 希捷硬盘查询保修期限的网址
  15. 局域网流量监控_常见的企业电脑监控网络管理软件哪一款好呢?
  16. 2022年,尽量还是别裸辞了吧···
  17. 渣土车管理实施方案,运输监控管理系统介绍
  18. java中的强行终止线程的执行
  19. [C++]用多态实现简单异常处理
  20. 计算机技术在数学教学中的应用,计算机技术在数学教学中的应用

热门文章

  1. r语言 协整_基于协整关系的配对量化交易策略-R语言
  2. 浙江推出冷链上“链” 用区块链技术实现食品安全追溯
  3. 【历史上的今天】6 月 21 日:第一台存储程序计算机首次运行;XML 之父诞生;IBM 推出 AS/400
  4. java 获取当前时间的毫秒数
  5. java开发微信公众号(SpringMVC)1-简述
  6. CorelDRAWX4的VBA插件开发(二十五)多类目选择实现复合框内容置换
  7. 防火墙的概念,核心技术,原理,以及可能受到的各种攻击
  8. Go游戏服务端框架从零搭建(一)— 架构设计
  9. hp服务器如何ghost系统安装,专家亲授惠普(HP)笔记本安装不了GHOST系统该怎么办?(附解决方法)...
  10. php json_decode无法解析,json_decode无法解析\t的问题