01 前言

是否还记得断桥残雪,一听就是一下午 是否还记得认错,上课前必点歌曲 是否还记得素颜,同桌那清秀的脸庞

最近许嵩在开演唱会,借此机会,听着许嵩的歌,做了这篇分享,不禁唏嘘,我们在慢慢的长大,竟记不起当年模样。

02 网页分析

这里,我们进入网易云音乐官网,找到许嵩的个人单曲。

这里是post请求,而且参数较复杂,所以使用selenium来进行爬虫,这里除了获取基本信息外,需要获取每首歌的id,用于歌词爬虫。

歌词爬虫,我们使用下面的url即可,换不同的id,就是不同歌的歌词。

http://music.163.com/api/song/lyric?id=1309642305&lv=1&kv=1&tv=-1
03 爬虫代码

首先是所有歌曲的爬虫,使用selenium,部分代码见下。

from selenium import webdriver
from lxml import etree
import time
import csv
def get_info(url):  driver = webdriver.Chrome() driver.maximize_window()    driver.get(url) driver.implicitly_wait(10)  iframe = driver.find_elements_by_tag_name('iframe')[0]  driver.switch_to.frame(iframe)  html = etree.HTML(driver.page_source)   infos = html.xpath('//div[@class="srchsongst"]/div')    for info in infos:  song_id = info.xpath('div[2]/div/div/a/@href')[0].split('=')[-1]    song = info.xpath('div[2]/div/div/a/b/text()')[0]   singer1 = info.xpath('div[4]/div/a')[0] singer = singer1.xpath('string(.)') album = info.xpath('div[5]/div/a/@title')[0]    print(song_id,song,singer,album)    writer.writerow([song_id, song, singer, album])
if __name__ == '__main__':  fp = open('music.csv', 'w', newline='', encoding='utf-8')   writer = csv.writer(fp) writer.writerow(['song_id', 'song', 'singer', 'album']) url = 'https://music.163.com/#/search/m/?s=%E8%AE%B8%E5%B5%A9&type=1'   get_info(url)

在这些歌中,有些是cover的,而有些是伴奏,在下载歌词之前,我们对这些数据进行清洗,尽量保证是许嵩原创而且不是伴奏的。

def foo1(singer):   if '许嵩' in singer:  return 'no cover'   else:   return 'cover'
def foo2(song): if '伴奏' in song:    return '是'  else:   return '否'
music['原创'] = music['singer'].apply(foo1)
music['伴奏'] = music['song'].apply(foo2)
music[(music['原创'] == 'no cover') & (music['伴奏'] == '否')].to_csv('music_original.csv',index=None,encoding='utf-8')

最后,我们根据前面的url,下载歌词。

import requests
import re
import json
url = ''
headers = { 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36'
}
def get_info(id):   res = requests.get('http://music.163.com/api/song/lyric?id={}&lv=1&kv=1&tv=-1'.format(id),headers=headers)  json_data = json.loads(res.text)    lyric = json_data['lrc']['lyric']   lyric = re.sub('\[.*\]','',lyric)   return lyric
for i in range(music_original.shape[0]):    try:    fp = open('song/{}.txt'.format(music_original.iloc[i,1]),'w',encoding='utf-8')  fp.write(get_info(music_original.iloc[i,0]))    fp.close()  except: pass

04 数据分析

01 数据基本情况

许嵩歌曲共计175首,妥妥的原创高产歌手~

02 专辑单曲数

早期的许嵩,是一个网络歌手,所以都放在了许嵩单曲集中,随后发的苏格拉没有底,寻雾启示是很不错的优秀专辑。

03 歌词词云

最后利用jieba分词,制作许嵩歌词的词云。

许嵩的歌偏悲伤爱情,通过词云也可以看出来。

公众号后台回复【入群】,加入学习交流群,需要代码的可以加群。

用Python分析许嵩的歌相关推荐

  1. 用Python分析许嵩的歌,带你追忆青春时的懵懂

    前言 是否还记得断桥残雪,一听就是一下午 是否还记得认错,上课前必点歌曲 是否还记得素颜,同桌那清秀的脸庞 最近许嵩在开演唱会,借此机会,听着许嵩的歌,做了这篇分享,不禁唏嘘,我们在慢慢的长大,竟记不 ...

  2. 分析许嵩的175首歌曲,看看大家为什么那么喜欢听他的歌

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 以下文章来源于罗罗攀 ,作者罗罗攀 刚接触Python的新手.小白,可以复制下面的链接去免费观看P ...

  3. python里的英文歌叫什么_Python分析盘点2019全球流行音乐:是哪些歌曲榜单占领了我们?...

    写在前面:圣诞刚过,弥留者节日气息的大家是否还在继续学习呐~在匆忙之际也不忘给自己找几首好听的歌曲放松一下,缠绕着音乐一起来看看关于2019年流行音乐趋势是如何用Python分析的吧! 昨天下午没事儿 ...

  4. python里的英文歌叫什么_用Python分析韩国女团最喜欢的英文单词

    原标题:用Python分析韩国女团最喜欢的英文单词 本文经Python中文社区(公众号ID:python-china) 授权转载,转载请联系出处 ♚ 盛光晓,粗通python,精通arcpy,某公司首 ...

  5. 用Python分析周杰伦歌曲并进行数据可视化

    大家好,今天我们用python分析下周杰伦歌曲.为了尽量完整地呈现从原始数据到可视化的过程,接下来我们会先简单讲解数据的预处理过程,即如何将 JSON 数据转化为Excel 格式,以及如何对周杰伦的歌 ...

  6. python里的英文歌叫什么_Python告诉你:从《入海》到《消愁》毛不易的歌里都在唱些什么?...

    原标题:Python告诉你:从<入海>到<消愁>毛不易的歌里都在唱些什么? CDA数据分析师 出品 作者:Mika 数据:真达 后期:泽龙.Mika [导语]:今天我们来聊聊- ...

  7. Python 将网易云歌单迁移到QQ音乐

    最近,网易云音乐越来越多的歌曲变灰了,许多我以前喜欢听的音乐都消失在云端,非常可惜.最近我还是想听回以前的歌曲,于是只能使用有那些歌曲版权的QQ音乐,麻烦的是,QQ音乐没有我在网易云音乐的歌单,两个软 ...

  8. python歌词分析_用Python分析周杰伦6.5W字的歌词,原来他是这样的人

    原标题:用Python分析周杰伦6.5W字的歌词,原来他是这样的人 雷锋网按:本文作者冬鑫,原文载于作者,雷锋网已获授权.文中所有链接详见文末"阅读原文". 前一段时间分析民谣歌词 ...

  9. python中的英文歌_Python告诉你:从《入海》到《消愁》毛不易的歌里都在唱些什么?...

    [导语]:今天我们来聊聊--B站联合毛不易发布的毕业季主题曲<入海>,以及背后不一样的毛不易.Python技术部分请看第三部分. Show me data,用数据说话!今天我们聊一聊 毛不 ...

最新文章

  1. 学习需要总结。。。。
  2. python文档字符串_结构化的python文档字符串,对IDE友好
  3. UA MATH564 概率分布总结
  4. 关于ajax 1.0的一个问题?
  5. STM32看门狗总结
  6. stm32 内部sram大小_在SRAM、FLASH中调试代码的配置方法(附详细步骤)
  7. HDU 4942 Game on S♂play(线段树、模拟、扩栈)
  8. UVA515 King
  9. js动态计算移动端rem
  10. 打造真正理想中的会呼吸的智慧城市
  11. AvalonDock的基本用法
  12. LORA 网关上电后对应配置 以及常用的AT指令
  13. springboot 文件下载 文件名乱码 特殊字符乱码
  14. 谷歌浏览器手势插件-双击关闭标签等多种国人手势
  15. 绩效考核过程中会遇到的问题
  16. web技术分享| 前端秘籍之“易容”术
  17. 图片在线预览html,Viewer.js – 强大的JS/jQuery图片查看器
  18. 软件测试 大概 学到什么程度可以去面试呢
  19. 奥西400服务器维修,奥西TDS400故障代码
  20. python中同一个类中方法之间的变量怎么调用

热门文章

  1. OracleXE 中没有WM_CONCAT解决owmctab.plb、owmaggrs.plb、owmaggrb.plb包下载
  2. mac电脑屏幕护眼颜色_如何反转Mac屏幕的颜色
  3. EasyRecovery15易恢复适用于Win和Mac的电脑数据恢复软件
  4. 一个月抖音涨粉200万,直男财经的成功方法论
  5. ManyToOne凭空多了很多空记录,@OrderColumn的问题
  6. 2022-2027年中国枸杞行业市场深度分析及投资战略规划报告
  7. 韩国科学家研发透明RRAM存储颗粒
  8. bootstrap- 行内编辑
  9. 嵌入式linux之按键驱动(platform)
  10. vo在自动驾驶中的应用(二)