Python 爬取张国荣最火的 8 首歌,60000 评论看完泪奔!

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/csdnnews/article/details/88968350

640?wx_fmt=gif

640?wx_fmt=jpeg

今天是4月1日。

每年的这一天,

一部分人搜索枯肠想尽办法整蛊,

一部分人感怀四月该很好,倘若你还在。

甚至有人,用AI的方式来还原你。

但那终究不是你啊。

640?wx_fmt=gif图源见水印

你走了16年了,那些当年在课桌前趁老师不注意偷偷听你歌的少年们,或许早已为人夫为人妇。

即便如此,每年却有很多人在这人间四月天里,借着你给世界留下的不绝回音,去思念你、去给你留言,即便明明知道,永远也不会收到回复。

640?wx_fmt=gif

今天,CSDN选择以科技的方式,来纪念哥哥。

我们爬取了你在网易云音乐上,评论最多的八首歌曲。

它们依次是:《沉默是金》《春夏秋冬》《倩女幽魂》《当爱已成往事》《我》《风继续吹》《玻璃之情》《风再起时》。

总共64540条的评论中,出现最多的是“生日快乐”、“哥哥”、“加油”、“你若尚在场”、“新年快乐”和“哥哥,生日快乐”。

640?wx_fmt=png

词云图里很少有“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('[Warning]:_GetSongsInfo <links> not find...')
    Info = {'ID': [], 'NAME': []}
    for link in links:
        SongID = link.get('href').split('=')[-1]
        SongName = link.get_text()
        Info['ID'].append(SongID)
        Info['NAME'].append(SongName)
    # print(Info)
    return Info


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


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


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

 

640?wx_fmt=png

《沉默是金》

是错永不对 真永是真

任你怎说安守我本份

始终相信 沉默是金

 

这首歌是你亲自谱曲的。

当时,“谭张争霸”(1986-1989年,谭咏麟和张国荣为争夺乐坛地位,而在音乐上展开了全面竞争角逐)已经进入白热化。

你讨厌争来争去,于是借歌明志,推出了《沉默是金》。

你说,“任你怎说安守我本份,始终相信,沉默是金。”

清者自清,你的沉默,愈加彰显纯真本色。

 

640?wx_fmt=png

《春夏秋冬》

秋天该很好 你若尚在场

秋风即使带凉 亦漂亮

深秋中的你填密我梦想

就像落叶飞 轻敲我窗

 

每到你生日时、每到新年时、每到你离开世界的那天时,你的歌下面就会有大量评论涌来。

你是4月1日走的,但是喜欢你的人,总是3月30日、31日甚至更早,就来你的音乐下面评论。

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

你眼神中的澄澈和犹豫,事隔经年,还是那么让人无法忘记。

640?wx_fmt=other

图源自网络

 

640?wx_fmt=png

《倩女幽魂》

红尘里 美梦有几多方向

找痴痴梦幻中心爱

路随人茫茫

 

640?wx_fmt=gif

《倩女幽魂》里,你是羞涩怯弱的书生,走夜路时要点三盏灯笼,但却为了担心阳光把小倩的魂魄照散,死死地用肩膀扛着门板。

小倩走了,宁采臣的心也跟着死了。

哥哥走了,别人再演宁采臣,总感觉除却巫山不是云。

 

640?wx_fmt=png

《当爱已成往事》

为何你不懂

只要有爱就有痛

有一天你会知道

人生没有我并不会不同

 

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

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

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

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

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

 

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

 

640?wx_fmt=png

《我》

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

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

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

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

 

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

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

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

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

640?wx_fmt=jpeg

图源自网络

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

 

640?wx_fmt=png

《风继续吹》

风继续吹不忍远离

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

过去多少快乐记忆

何妨与你一起去追

 

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

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

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

640?wx_fmt=png

 

 

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

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

 

640?wx_fmt=png

《玻璃之情》

 

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

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

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

 

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

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

 

640?wx_fmt=png

《风再起时》

我回头再往某年

像失色照片乍现眼前

这个茫然困惑少年

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

 

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

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

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

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

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

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

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

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

640?wx_fmt=gif

不知道现在的你,还唱歌吗?还演戏吗?

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

谢谢你,留给我们这么多歌曲和电影。

愿你在另外一个世界,永远没有忧郁和伤心。

以上。

作者:丁彦军,一名痴恋于Python的码农。

公众号:恋习Python,在这里我们一起用Python做些有意义的事。

Python这么火,为什么还不学?

https://edu.csdn.net/topic/python115?utm_source=csdn_bw

【End】

640?wx_fmt=jpeg

 热 文 推 荐 

 程序员不过愚人节???

 5G 还未商用,6G 研究已开始?!

俄罗斯想要脱离全球互联网?

程序媛报告:调查了 12,000 名女性开发者发现,女性比男性更懂 Java!

☞ 姚期智提出的"百万富翁"难题被破解? 多方安全计算MPC到底是个什么鬼?

深度 | 人工智能究竟能否实现?

☞ 全民 AI !教育部宣布 35 所高校新增 AI 本科专业

趣挨踢 | 用大数据扒一扒蔡徐坤的真假流量粉


 

System.out.println("点个在看吧!");
console.log("点个在看吧!");
print("点个在看吧!");
printf("点个在看吧!\n");
cout << "点个在看吧!" << endl;
Console.WriteLine("点个在看吧!");
Response.Write("点个在看吧!");
alert("点个在看吧!")
echo "点个在看吧!"

640?wx_fmt=gif点击阅读原文,输入关键词,即可搜索您想要的 CSDN 文章。

640?wx_fmt=png你点的每个“在看”,我都认真当成了喜欢

展开阅读全文

泪奔求解

04-01

昨天看了别人想,使图片显示自适应屏幕大小。我就试了获得屏幕的宽高,通过代码,相对的计算各个控件的 宽高。rnrn还没写出来,到这一步,运行。 发现 图片下方显示的文本,是执行的。 可是为什么会不显示呢?rnrnrn我试着用宽度填充, 图片是随着屏幕尺寸不同而填充的,不过图片太小,容易画面失真。 为什么有人说不填充呢? 纵向rnrn填充,为什么上下,估计有个差不多一个编辑框大小的高度。 rnrnrn想知道,原因,是我XML布局设计出错了吗? rnrn[code=XML]rnrn rn rn rn rn[/code]rnrn[code=Java]package com.android.ImageView;rnrnimport android.app.Activity;rnimport android.os.Bundle;rnimport android.os.Handler;rnimport android.os.Message;rnimport android.util.DisplayMetrics;rnimport android.util.Log;rnimport android.widget.ImageView;rnimport android.widget.TextView;rnrnpublic class MainActivity extends Activity rnrn ImageView imageView;rn TextView textView;rn TextView m_TextView;rn int image_alpha=10000; //ImageView's alpha valuern private final static String TAG= "MainActivity";rn rn Handler mHandler = new Handler();rn boolean isrun=false;rn DisplayMetrics dm=new DisplayMetrics();rn rn @Overridern public void onCreate(Bundle savedInstanceState)rn rn super.onCreate(savedInstanceState);rn setContentView(R.layout.main);rn rn //取得窗口属性rn getWindowManager().getDefaultDisplay().getMetrics(dm); rn int screen_Width=dm.widthPixels;rn int screen_Height=dm.heightPixels; rn m_TextView=(TextView)findViewById(R.id.TextView02);rn m_TextView.setText("屏幕宽度:"+screen_Width+"\n"+"屏幕高度:"+screen_Height);rn rn isrun=true; rn imageView = (ImageView)findViewById(R.id.ImageView01);rn textView = (TextView)findViewById(R.id.TextView01);rn rn //set image sourcern imageView.setImageResource(R.drawable.iamge);rn imageView.setAlpha(image_alpha);rn rn new Thread(new Runnable()rn rn @Overridern public void run()rn rn while (isrun)rn rn tryrn rn Thread.sleep(100);rn updateAlpha();rn rn catch (Exception e)rn rn e.printStackTrace();rn rn rn rn rn ).start(); rn rn //接收消息之后,更新Alpha的值rn mHandler =new Handler()rn rn @Overridern public void handleMessage(Message msg)rn rn super.handleMessage(msg);rn imageView.setAlpha(image_alpha);rn Log.i(TAG,"alpha");rn textView.setText("The value of Alpha"+ Integer.toString(image_alpha));rn Log.i(TAG,"setText");rn //更新rn imageView.invalidate();rn Log.i(TAG,"invalidate alpha");rn rn ;rn rn rn rn public void updateAlpha()rn rn if (image_alpha-7>=0)rn rn image_alpha-=7;rn rn elsern rn image_alpha=0;rn isrun=false;rn rn //发送需要更新ImageView的消息rn mHandler.sendMessage(mHandler.obtainMessage());rn rnrn[/code] 论坛

没有更多推荐了,返回首页