本文的文字及图片来源于网络,仅供学习、交流使用,不具备任何商业用途,若有问题请及时联系咱们以做处理。html
如下文章来源于罗罗攀 ,做者罗罗攀web
刚接触Python的新手、小白,能够复制下面的连接去免费观看Python的基础入门教学视频json
https://v.douyu.com/author/y6AZ4jn9jwKW
是否还记得断桥残雪,一听就是一下午 是否还记得认错,上课前必点歌曲 是否还记得素颜,同桌那清秀的脸庞api
最近许嵩在开演唱会,几乎机会,听着许嵩的歌,作成此次分享,不由唏嘘,咱们在慢慢的长大,竟记不起当年模样。网络
这里,咱们进入网易云音乐官网,找到许嵩的我的单曲。app
这里是post请求,并且参数较复杂,因此使用硒来进行爬虫,这里除了获取基本信息外,须要获取每首歌的id,用于歌词爬虫。post
歌词爬虫,咱们使用下面的网址便可,换不一样的id,就是不一样歌的歌词。学习
http://music.163.com/api/song/lyric?id=1309642305&lv=1&kv=1&tv=-1
首先是全部歌曲的爬虫,使用硒,部分代码见下。url
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的,而有些是伴奏,在下载歌词以前,咱们对这些数据进行清洗,尽可能保证是许嵩原创并且不是伴奏的。spa
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分词,制做许嵩歌词的词云。
许嵩的歌偏悲伤爱情,经过词云也能够修剪来。