分析许嵩的175首歌曲,看看大家为什么那么喜欢听他的歌[Python基础]

python

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。

以下文章来源于罗罗攀 ,作者罗罗攀

刚接触Python的新手、小白,可以复制下面的链接去免费观看Python的基础入门教学视频

https://v.douyu.com/author/y6AZ4jn9jwKW

前言

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

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

 

网页分析

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

 

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

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

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

爬虫代码

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

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

 

数据分析

01数据基本情况

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

02专辑单曲数

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

 

03歌词词云

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

 

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

以上是 分析许嵩的175首歌曲,看看大家为什么那么喜欢听他的歌[Python基础] 的全部内容, 来源链接: utcz.com/z/530692.html

回到顶部