首頁 >後端開發 >Python教學 >Python 爬取張國榮最火的 8 首歌,60000 評論看完淚奔!

Python 爬取張國榮最火的 8 首歌,60000 評論看完淚奔!

little bottle
little bottle轉載
2019-04-02 14:19:082426瀏覽



昨天是 4 月 1 日。

每年的這一天,

一部分人搜尋枯腸想盡辦法整蠱,

一部分人感懷四月該很好,倘若你還在。

甚至有人,用 AI 的方式來還原你。

但那終究不是你。

Python 爬取張國榮最火的 8 首歌,60000 評論看完淚奔!

圖片來源見水印

你走了16 年了,那些當年在課桌前趁老師不注意偷偷聽你歌的少年們,或許早已為人夫為人婦。

即便如此,每年卻有很多人在這人間四月天裡,藉著你給世界留下的不絕回音,去思念你、去給你留言,即便明明知道,永遠也不會收到回覆。

640 (1).gif

眼下,我們選擇以科技的方式,來紀念哥哥。

我們爬取了你在網易雲音樂上,評論最多的八首歌曲。

它們依序是:《沉默是金》《春夏秋冬》《倩女幽魂》《當愛已成往事》《我》《風繼續吹》《玻璃之情》《風再起時》。

總共 64540 則的評論中,出現最多的是「生日快樂」、「哥哥」、「加油」、「你若尚在場」、「新年快樂」和「哥哥,生日快樂」。

Python 爬取張國榮最火的 8 首歌,60000 評論看完淚奔!

詞雲圖裡很少有「4 月1 日」、「愚人節」的字眼,這並不是這一天去給你評論的人少,而是在這個日子,實在不適合對你說「快樂」。

來,先給大家看評論的程式碼。

# coding:utf-8
import json
import time
import requests
from fake_useragent import UserAgent
import random
import multiprocessing
import sys
#reload(sys)
#sys.setdefaultencoding('utf-8')

ua = UserAgent(verify_ssl=False)

song_list = [{'186453':'春夏秋冬'},{'188204':'沉默是金'},{'188175':'倩女幽魂'},{'188489':'风继续吹'},{'187374':'我'},{'186760':'风雨起时'}]
headers = {
    'Origin':'https://music.163.com',
    'Referer': 'https://music.163.com/song?id=26620756',
    'Host': 'music.163.com',
    'User-Agent': ua.random
}

def get_comments(page,ite):
    # 获取评论信息
    # """
    for key, values in ite.items():
        song_id = key
        song_name = values
    ip_list = [IP列表]
    url = 'http://music.163.com/api/v1/resource/comments/R_SO_4_'+ song_id +'?limit=20&offset=' + str(page)
    proxies = get_random_ip(ip_list)
    try:
        response = requests.get(url=url, headers=headers,proxies=proxies)
    except Exception as e:
        print (page)
        print (ite)
        return 0
    result = json.loads(response.text)
    items = result['comments']
    for item in items:
        # 用户名
        user_name = item['user']['nickname'].replace(',', ',')
        # 用户ID
        user_id = str(item['user']['userId'])
        print(user_id)
        # 评论内容
        comment = item['content'].strip().replace('\n', '').replace(',', ',')
        # 评论ID
        comment_id = str(item['commentId'])
        # 评论点赞数
        praise = str(item['likedCount'])
        # 评论时间
        date = time.localtime(int(str(item['time'])[:10]))
        date = time.strftime("%Y-%m-%d %H:%M:%S", date)

八首歌的歌詞代碼:

import requests
from bs4 import BeautifulSoup
import re
import json
import time
import random
import os

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3355.4 Safari/537.36',
    'Referer': 'http://music.163.com',
    'Host': 'music.163.com'
}


# 获取页面源码
def GetHtml(url):
    try:
        res = requests.get(url=url, headers=headers)
    except:
        return None
    return res.text


# 提取歌手歌词信息
def GetSongsInfo(url):
    print('[INFO]:Getting Songs Info...')
    html = GetHtml(url)
    soup = BeautifulSoup(html, 'lxml')
    links = soup.find('ul', class_='f-hide').find_all('a')
    if len(links) < 1:
        print(&#39;[Warning]:_GetSongsInfo <links> not find...&#39;)
    Info = {&#39;ID&#39;: [], &#39;NAME&#39;: []}
    for link in links:
        SongID = link.get(&#39;href&#39;).split(&#39;=&#39;)[-1]
        SongName = link.get_text()
        Info[&#39;ID&#39;].append(SongID)
        Info[&#39;NAME&#39;].append(SongName)
    # print(Info)
    return Info


def GetLyrics(SongID):
    print(&#39;[INFO]:Getting %s lyric...&#39; % SongID)
    ApiUrl = &#39;http://music.163.com/api/song/lyric?id={}&lv=1&kv=1&tv=-1&#39;.format(SongID)
    html = GetHtml(ApiUrl)
    html_json = json.loads(html)
    temp = html_json[&#39;lrc&#39;][&#39;lyric&#39;]
    rule = re.compile(r&#39;\[.*\]&#39;)
    lyric = re.sub(rule, &#39;&#39;, temp).strip()
    print(lyric)
    return lyric


def main():
    SingerId = input(&#39;Enter the Singer ID:&#39;)
    url = &#39;http://music.163.com/artist?id={}&#39;.format(SingerId)
    # url = "http://music.163.com/artist?id=6457"
    Info = GetSongsInfo(url)
    IDs = Info[&#39;ID&#39;]
    i = 0
    for ID in IDs:
        lyric = GetLyrics(ID)
        SaveLyrics(Info[&#39;NAME&#39;][i], lyric)
        i += 1
        time.sleep(random.random() * 3)
        # print(&#39;[INFO]:All Done...&#39;)


def SaveLyrics(SongName, lyric):
    print(&#39;[INFO]: Start to Save {}...&#39;.format(SongName))
    if not os.path.isdir(&#39;./results&#39;):
        os.makedirs(&#39;./results&#39;)
    with open(&#39;./results/{}.txt&#39;.format(SongName), &#39;w&#39;, encoding=&#39;utf-8&#39;) as f:
        f.write(lyric)

01

《沉默是金》

是錯永遠不會對真永是真

任你怎說安守我本份

#總是相信沉默是金


這首歌是你自己譜曲的。

當時,「譚張爭霸」(1986-1989 年,譚詠麟和張國榮為爭奪樂壇地位,而在音樂上展開了全面競爭角逐)已經進入白熱化。

你討厭爭來爭去,於是藉歌明志,推出了《沉默是金》。

你說,「任你怎說安守我本份,始終相信,沉默是金。」

清者自清,你的沉默,愈加彰顯純真本色。

02

《春夏秋冬》

秋天該很好你若尚在場

秋風即使帶涼亦漂亮

深秋中的你填密我夢想

就像落葉飛輕敲我窗


每到你生日時、每到新年時、每到你離開世界的那天時,你的歌下面就會有大量評論湧來。

你是 4 月 1 日走的,但是喜歡你的人,總是 3 月 30 日、31 日甚至更早,就來你的音樂下面評論。

多少人希望你復活,甚至有人在重慶中看到一位和你眉眼很像的出租者司機,都忍不住拍下。

你眼神中的澄澈和猶豫,事隔經年,還是那麼讓人無法忘記。

Python 爬取張國榮最火的 8 首歌,60000 評論看完淚奔!

03

《倩女幽魂》

紅塵裡 美夢有幾多方向

找癡癡夢幻中心愛

路隨人茫茫

640 (2).gif

《倩女幽魂》裡,你是羞澀怯弱的書生,走夜路時要點三盞燈籠,但卻為了擔心陽光把小倩的魂魄照散,死死地用肩膀扛著門板。

小倩走了,寧采臣的心也跟著死了。

哥哥走了,別人再演寧采臣,總感覺除卻巫山不是雲。

04


#《當愛已成往事》

為何你不懂

只要有愛就有痛

有一天你會知道

人生没有我并不会不同


《霸王别姬》里,你演程蝶衣。

演得那么妩媚,以至于有人断言你是童子功出身。

其实,你只不过是重病还坚持训练而已。

你说“不疯魔,不成活”,所以你知道段小楼娶妻后,会嫉妒会难过会发狂。

戏里戏外,你都爱过,你说“只要有爱就有痛”,但却更像是唱给自己听。

Python 爬取張國榮最火的 8 首歌,60000 評論看完淚奔!

你这样的纯粹和“认死理”,总是让粉丝很心疼你......

05


《我》

孤独的沙漠里 一样盛放的赤裸裸

多么高兴 在琉璃屋中快乐生活

对世界说 甚么是光明和磊落

我就是我 是颜色不一样的烟火


多少人用你唱的那句“我就是我,是颜色不一样的烟火”来鼓励自己活出自我。

但最后你却已烟火一样的方式,离开了人世间。

几年前,梁朝伟在纪念你的演唱会上,拨通你的电话。

电话里,留言声依旧,“你好,我是leslie,有事请留言。”

Python 爬取張國榮最火的 8 首歌,60000 評論看完淚奔!

梁朝伟沉默了,许久之后,淡淡说句:“宝荣啊,不如我们从头来过。”

06


《风继续吹》

风继续吹不忍远离

心里亦有泪不愿流泪望着你

过去多少快乐记忆

何妨与你一起去追


这是你的成名曲,所以你似乎很中意它。

每每参加演唱会,都要唱一唱。

最后一次唱起时,不知怎的竟然哭了,台下观众也跟着你哭。

Python 爬取張國榮最火的 8 首歌,60000 評論看完淚奔!

Python 爬取張國榮最火的 8 首歌,60000 評論看完淚奔!

因为这首歌,是你翻身的见证啊。

你在歌坛摸爬滚打那么多年,一直寂寂无声,是这首歌才没有让你被埋没。

07


《玻璃之情》

不信眼泪 能令失落的你爱下去

难收的覆水 将感情漫漫荡开去

如果你太累 及时地道别没有罪


你曾说,每次唱歌前,都要给这首歌编一个故事,唱的时候,脑海中浮现出故事的画面,而这种画面感,让你唱得很投入。

为什么你的歌经久不息,就是因为你不仅对人重情,对歌也重情。

08

《风再起时》

我回头再往某年

像失色照片乍现眼前

这个茫然困惑少年

愿一生以歌 投入每天永不变


1989 年,已经见过了娱乐圈太多浮沉的你,突然宣布告别乐坛。

你见过喧嚣,但你却不属于喧嚣。

策划告别演唱会之前,你和音乐人陈少琪、黎小田商量。

陈少琪说,“你不是有一首成名曲叫《风继续吹》么?不如歌名就叫《风再起时》,就是希望只要一起风的时候,歌迷就会想起你的这首歌。”

边上的黎小田,花了十五分钟就在随手找来的白纸上,谱好了曲子。

很快,陈少琪也把词填好了。

有人说,这首歌里的歌词,就是为你量身定做的:“我回头再往某年,像失色照片乍现眼前,这个茫然困惑少年,愿一生以歌,投入每天永不变”。

愿一生以歌,投入每天永不变......

640 (3).gif


不知道現在的你,還唱歌嗎?還演戲嗎?

你知不知道,很多人都在想你。

謝謝你,留給我們這麼多歌曲和電影。

願你在另一個世界,永遠沒有憂鬱和傷心。

以上。

這篇文章到這裡就已經全部結束了,更多其他精彩內容大家可以關注PHP中文網的Python影片教學專欄! ! !

以上是Python 爬取張國榮最火的 8 首歌,60000 評論看完淚奔!的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:程序人生 coder_life。如有侵權,請聯絡admin@php.cn刪除