用Python分析許嵩的歌

01 前言

是否還記得斷橋殘雪拂到,一聽(tīng)就是一下午
是否還記得認(rèn)錯(cuò)遏匆,上課前必點(diǎn)歌曲
是否還記得素顏法挨,同桌那清秀的臉龐

最近許嵩在開(kāi)演唱會(huì),借此機(jī)會(huì)幅聘,聽(tīng)著許嵩的歌凡纳,做了這篇分享,不禁唏噓帝蒿,我們?cè)诼拈L(zhǎng)大荐糜,竟記不起當(dāng)年模樣。

02 網(wǎng)頁(yè)分析

這里葛超,我們進(jìn)入網(wǎng)易云音樂(lè)官網(wǎng)暴氏,找到許嵩的個(gè)人單曲。

這里是post請(qǐng)求绣张,而且參數(shù)較復(fù)雜答渔,所以使用selenium來(lái)進(jìn)行爬蟲(chóng),這里除了獲取基本信息外侥涵,需要獲取每首歌的id沼撕,用于歌詞爬蟲(chóng)。

歌詞爬蟲(chóng)芜飘,我們使用下面的url即可务豺,換不同的id,就是不同歌的歌詞嗦明。

http://music.163.com/api/song/lyric?id=1309642305&lv=1&kv=1&tv=-1
03 爬蟲(chóng)代碼

首先是所有歌曲的爬蟲(chóng)冲呢,使用selenium,部分代碼見(jiàn)下招狸。

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的,而有些是伴奏裙戏,在下載歌詞之前乘凸,我們對(duì)這些數(shù)據(jù)進(jìn)行清洗,盡量保證是許嵩原創(chuàng)而且不是伴奏的累榜。

def foo1(singer):
    if '許嵩' in singer:
        return 'no cover'
    else:
        return 'cover'
    
def foo2(song):
    if '伴奏' in song:
        return '是'
    else:
        return '否'
    
music['原創(chuàng)'] = music['singer'].apply(foo1)
music['伴奏'] = music['song'].apply(foo2)

music[(music['原創(chuàng)'] == 'no cover') & (music['伴奏'] == '否')].to_csv('music_original.csv',index=None,encoding='utf-8')

最后营勤,我們根據(jù)前面的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 數(shù)據(jù)分析

01 數(shù)據(jù)基本情況

許嵩歌曲共計(jì)175首葛作,妥妥的原創(chuàng)高產(chǎn)歌手~

02 專輯單曲數(shù)

早期的許嵩寿羞,是一個(gè)網(wǎng)絡(luò)歌手,所以都放在了許嵩單曲集中赂蠢,隨后發(fā)的蘇格拉沒(méi)有底绪穆,尋霧啟示是很不錯(cuò)的優(yōu)秀專輯。

03 歌詞詞云

最后利用jieba分詞虱岂,制作許嵩歌詞的詞云玖院。

許嵩的歌偏悲傷愛(ài)情,通過(guò)詞云也可以看出來(lái)第岖。

公眾號(hào)后臺(tái)回復(fù)【入群】难菌,加入學(xué)習(xí)交流群,需要代碼的可以加群蔑滓。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末郊酒,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子键袱,更是在濱河造成了極大的恐慌猎塞,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,968評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件杠纵,死亡現(xiàn)場(chǎng)離奇詭異荠耽,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)比藻,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門铝量,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人银亲,你說(shuō)我怎么就攤上這事慢叨。” “怎么了务蝠?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,220評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵拍谐,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我馏段,道長(zhǎng)轩拨,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,416評(píng)論 1 279
  • 正文 為了忘掉前任院喜,我火速辦了婚禮亡蓉,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘喷舀。我一直安慰自己砍濒,他們只是感情好淋肾,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著爸邢,像睡著了一般樊卓。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上杠河,一...
    開(kāi)封第一講書(shū)人閱讀 49,144評(píng)論 1 285
  • 那天碌尔,我揣著相機(jī)與錄音,去河邊找鬼感猛。 笑死七扰,一個(gè)胖子當(dāng)著我的面吹牛奢赂,可吹牛的內(nèi)容都是我干的陪白。 我是一名探鬼主播,決...
    沈念sama閱讀 38,432評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼膳灶,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼咱士!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起轧钓,我...
    開(kāi)封第一講書(shū)人閱讀 37,088評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤序厉,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后毕箍,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體弛房,經(jīng)...
    沈念sama閱讀 43,586評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評(píng)論 2 325
  • 正文 我和宋清朗相戀三年而柑,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了文捶。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,137評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡媒咳,死狀恐怖粹排,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情涩澡,我是刑警寧澤顽耳,帶...
    沈念sama閱讀 33,783評(píng)論 4 324
  • 正文 年R本政府宣布,位于F島的核電站妙同,受9級(jí)特大地震影響射富,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜粥帚,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評(píng)論 3 307
  • 文/蒙蒙 一辉浦、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧茎辐,春花似錦宪郊、人聲如沸掂恕。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,333評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)懊亡。三九已至,卻和暖如春乎串,著一層夾襖步出監(jiān)牢的瞬間店枣,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,559評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工叹誉, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留鸯两,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,595評(píng)論 2 355
  • 正文 我出身青樓长豁,卻偏偏與公主長(zhǎng)得像钧唐,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子匠襟,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容