Python爬虫歌词及词频统计--(谢春花)
我从崖边跌落 落入星空辽阔 银河不清不浊 不知何以摆脱——谢春花《我从崖边跌落》
作为一名春花粉,决定用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爬虫歌词及词频统计--(谢春花)相关推荐
- Python中文分词及词频统计
Python中文分词及词频统计 中文分词 中文分词(Chinese Word Segmentation),将中文语句切割成单独的词组.英文使用空格来分开每个单词的,而中文单独一个汉字跟词有时候完全不是 ...
- 使用Python+NLTK实现英文单词词频统计
使用Python+NLTK实现英文单词词频统计 使用PythonNLTK实现英文单词词频统计 应用场景 Fork Me 参考运行环境 流程步骤图 详细步骤 读取文件 过滤特殊符号以及还原常见缩写单词 ...
- Python爬虫网易云歌词及词频统计--(周杰伦top50)
本篇博客是利用Python爬虫网易云音乐,并利用jieba分词,对歌词进行分词,然后分析周杰伦top50中最常出现的词语. 我们先尝试获取一首歌的歌词吧,比如等你下课这首歌 上面的id就是等你下课这首 ...
- python红楼梦人物词频统计_用 Python 分析《红楼梦》
1 前言 两个月以来,我通过互联网自学了一些文本处理的知识,用自然语言处理和机器学习算法对<红楼梦>进行了一些分析.这个过程中我找到了一些有趣的发现,所以我想写一篇文章,既㲌与大家分享和讨 ...
- python红楼梦人物词频统计_通过数据挖掘能分析《红楼梦》各回的真伪吗?
可以的.小智最近就尝试通过用机器学习的方法,分析了一下红楼梦后四十回的真伪. 以下内容引自小智的微信公众号,转载需申请授权. ------------------------------------- ...
- Python字典简单实现词频统计
目录 问题引入: 原理: 基本流程: 词频统计 ①录入待统计的句子 ②分割为多个单词 ③创建字典 利用Python内置库快速实现词频统计 全部代码 普通方法 方法二:get()实现 内置库实现 Pyt ...
- 使用python进行字频统计和词频统计
问题描述 读取给定的语料库,根据制表符'\t'划分其文本与标签,将获得的文本仅保留汉字部分,并按字划分,保存在列表中,至少使用一种方法,统计所有汉字的出现次数,并按照从高到低的顺序排序:至少使用一种方 ...
- Python实例分析——文本词频统计
基于中国大学mooc网嵩天老师的<Python语言程序设计>课程实例 文章目录 一.数字文本 pi 二.英文文本 *Hamlet* 三.中文文本<三国演义> 一.数字文本 pi ...
- python爬虫餐饮行业数据分析统计服_Python数据分析实战,简单快速制作餐饮行业商业化报告...
前些天有个朋友向我求救,他们公司最近要针对餐饮行业做数据分析,并为某些商家做出线上营销方案.但是他一头雾水,不知道该从哪方面下手. 我提醒他,是否先从商家的线上评价作为数据分析的入口例如美团.大众点评 ...
最新文章
- 一文了解迁移学习经典算法
- Android Dialog 系统样式讲解及透明背景
- jdk1.8之HashMap
- pandas的dataframe节省内存
- SQL工作笔记-达梦存储过程及时间触发器实现自动生成数据
- python有几大模块_Python的几个常用模块
- 关于javascript dom扩展:Selector API
- 38.django的路由系统
- win7 mysql zip包如何安装_MySql 5.7.31 win7 Zip压缩包配置教程
- 801机械设计2017题签
- ask调制matlab实验,ASK调制的matlab代码
- 软件设计师--中级 学习笔记(2)
- html批量打印保存到pdf,网页批量打印成PDF,并按条件合并成大PDF、生成页码
- 希捷硬盘查询保修期限的网址
- 局域网流量监控_常见的企业电脑监控网络管理软件哪一款好呢?
- 2022年,尽量还是别裸辞了吧···
- 渣土车管理实施方案,运输监控管理系统介绍
- java中的强行终止线程的执行
- [C++]用多态实现简单异常处理
- 计算机技术在数学教学中的应用,计算机技术在数学教学中的应用
热门文章
- r语言 协整_基于协整关系的配对量化交易策略-R语言
- 浙江推出冷链上“链” 用区块链技术实现食品安全追溯
- 【历史上的今天】6 月 21 日:第一台存储程序计算机首次运行;XML 之父诞生;IBM 推出 AS/400
- java 获取当前时间的毫秒数
- java开发微信公众号(SpringMVC)1-简述
- CorelDRAWX4的VBA插件开发(二十五)多类目选择实现复合框内容置换
- 防火墙的概念,核心技术,原理,以及可能受到的各种攻击
- Go游戏服务端框架从零搭建(一)— 架构设计
- hp服务器如何ghost系统安装,专家亲授惠普(HP)笔记本安装不了GHOST系统该怎么办?(附解决方法)...
- php json_decode无法解析,json_decode无法解析\t的问题