分析许嵩的175首歌曲,看看大家为什么那么喜欢听他的歌[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 webdriverfrom lxml import etreeimport timeimport csvdef 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 requestsimport reimport jsonurl
= ""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 lyricfor 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