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

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

Apr 02, 2019 pm 02:19 PM
python



昨天是 4 月 1 日。

每年的这一天,

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

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

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

但那终究不是你啊。

640.gif

图片来源见水印

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

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

640 (1).gif

眼下,我们选择以科技的方式,来纪念哥哥。

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

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

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

bf71d0869e4236acbf081d55dac3a81.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)
Salin selepas log masuk

八首歌的歌词代码:

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)
Salin selepas log masuk

01

《沉默是金》

是错永不对 真永是真

任你怎说安守我本份

始终相信 沉默是金


这首歌是你亲自谱曲的。

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

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

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

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

02

《春夏秋冬》

秋天该很好 你若尚在场

秋风即使带凉 亦漂亮

深秋中的你填密我梦想

就像落叶飞 轻敲我窗


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

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

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

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

fea9cd991bca8756bf59439b4c1185a.png

03

《倩女幽魂》

红尘里 美梦有几多方向

找痴痴梦幻中心爱

路随人茫茫

640 (2).gif

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

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

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

04


《当爱已成往事》

为何你不懂

只要有爱就有痛

有一天你会知道

人生没有我并不会不同


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

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

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

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

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

e0ba0d124707f96e492ba0b71034e01.png

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

05


《我》

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

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

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

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


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

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

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

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

2bf2583e8c63fe665081e965a586a9d.png

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

06


《风继续吹》

风继续吹不忍远离

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

过去多少快乐记忆

何妨与你一起去追


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

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

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

a7cb6abf7bac6ca3f82a4f15f1c052b.png

7959cda9e6dcfa314cbbb37bdb6060b.png

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

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

07


《玻璃之情》

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

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

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


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

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

08

《风再起时》

我回头再往某年

像失色照片乍现眼前

这个茫然困惑少年

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


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

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

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

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

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

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

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

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

640 (3).gif


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

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

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

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

以上。

本篇文章到这里就已经全部结束了,更多其他精彩内容大家可以关注PHP中文网的Python视频教程栏目!!!

Atas ialah kandungan terperinci Python 爬取张国荣最火的 8 首歌,60000 评论看完泪奔!. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Adakah Mysql perlu membayar Adakah Mysql perlu membayar Apr 08, 2025 pm 05:36 PM

MySQL mempunyai versi komuniti percuma dan versi perusahaan berbayar. Versi komuniti boleh digunakan dan diubahsuai secara percuma, tetapi sokongannya terhad dan sesuai untuk aplikasi dengan keperluan kestabilan yang rendah dan keupayaan teknikal yang kuat. Edisi Enterprise menyediakan sokongan komersil yang komprehensif untuk aplikasi yang memerlukan pangkalan data yang stabil, boleh dipercayai, berprestasi tinggi dan bersedia membayar sokongan. Faktor yang dipertimbangkan apabila memilih versi termasuk kritikal aplikasi, belanjawan, dan kemahiran teknikal. Tidak ada pilihan yang sempurna, hanya pilihan yang paling sesuai, dan anda perlu memilih dengan teliti mengikut keadaan tertentu.

Cara Menggunakan MySQL Selepas Pemasangan Cara Menggunakan MySQL Selepas Pemasangan Apr 08, 2025 am 11:48 AM

Artikel ini memperkenalkan operasi pangkalan data MySQL. Pertama, anda perlu memasang klien MySQL, seperti MySqlworkbench atau Command Line Client. 1. Gunakan perintah MySQL-Uroot-P untuk menyambung ke pelayan dan log masuk dengan kata laluan akaun root; 2. Gunakan CreateTatabase untuk membuat pangkalan data, dan gunakan Pilih pangkalan data; 3. Gunakan createtable untuk membuat jadual, menentukan medan dan jenis data; 4. Gunakan InsertInto untuk memasukkan data, data pertanyaan, kemas kini data dengan kemas kini, dan padam data dengan padam. Hanya dengan menguasai langkah -langkah ini, belajar menangani masalah biasa dan mengoptimumkan prestasi pangkalan data anda boleh menggunakan MySQL dengan cekap.

Fail muat turun MySQL rosak dan tidak boleh dipasang. Penyelesaian pembaikan Fail muat turun MySQL rosak dan tidak boleh dipasang. Penyelesaian pembaikan Apr 08, 2025 am 11:21 AM

Fail muat turun mysql adalah korup, apa yang perlu saya lakukan? Malangnya, jika anda memuat turun MySQL, anda boleh menghadapi rasuah fail. Ia benar -benar tidak mudah hari ini! Artikel ini akan bercakap tentang cara menyelesaikan masalah ini supaya semua orang dapat mengelakkan lencongan. Selepas membacanya, anda bukan sahaja boleh membaiki pakej pemasangan MySQL yang rosak, tetapi juga mempunyai pemahaman yang lebih mendalam tentang proses muat turun dan pemasangan untuk mengelakkan terjebak pada masa akan datang. Mari kita bercakap tentang mengapa memuat turun fail rosak. Terdapat banyak sebab untuk ini. Masalah rangkaian adalah pelakunya. Gangguan dalam proses muat turun dan ketidakstabilan dalam rangkaian boleh menyebabkan rasuah fail. Terdapat juga masalah dengan sumber muat turun itu sendiri. Fail pelayan itu sendiri rosak, dan sudah tentu ia juga dipecahkan jika anda memuat turunnya. Di samping itu, pengimbasan "ghairah" yang berlebihan beberapa perisian antivirus juga boleh menyebabkan rasuah fail. Masalah Diagnostik: Tentukan sama ada fail itu benar -benar korup

Mysql tidak dapat dipasang setelah memuat turun Mysql tidak dapat dipasang setelah memuat turun Apr 08, 2025 am 11:24 AM

Sebab utama kegagalan pemasangan MySQL adalah: 1. Isu kebenaran, anda perlu menjalankan sebagai pentadbir atau menggunakan perintah sudo; 2. Ketergantungan hilang, dan anda perlu memasang pakej pembangunan yang relevan; 3. Konflik pelabuhan, anda perlu menutup program yang menduduki port 3306 atau mengubah suai fail konfigurasi; 4. Pakej pemasangan adalah korup, anda perlu memuat turun dan mengesahkan integriti; 5. Pembolehubah persekitaran dikonfigurasikan dengan salah, dan pembolehubah persekitaran mesti dikonfigurasi dengan betul mengikut sistem operasi. Selesaikan masalah ini dan periksa dengan teliti setiap langkah untuk berjaya memasang MySQL.

Penyelesaian kepada perkhidmatan yang tidak dapat dimulakan selepas pemasangan MySQL Penyelesaian kepada perkhidmatan yang tidak dapat dimulakan selepas pemasangan MySQL Apr 08, 2025 am 11:18 AM

MySQL enggan memulakan? Jangan panik, mari kita periksa! Ramai kawan mendapati bahawa perkhidmatan itu tidak dapat dimulakan selepas memasang MySQL, dan mereka sangat cemas! Jangan risau, artikel ini akan membawa anda untuk menangani dengan tenang dan mengetahui dalang di belakangnya! Selepas membacanya, anda bukan sahaja dapat menyelesaikan masalah ini, tetapi juga meningkatkan pemahaman anda tentang perkhidmatan MySQL dan idea anda untuk masalah penyelesaian masalah, dan menjadi pentadbir pangkalan data yang lebih kuat! Perkhidmatan MySQL gagal bermula, dan terdapat banyak sebab, mulai dari kesilapan konfigurasi mudah kepada masalah sistem yang kompleks. Mari kita mulakan dengan aspek yang paling biasa. Pengetahuan asas: Penerangan ringkas mengenai proses permulaan perkhidmatan MySQL Startup. Ringkasnya, sistem operasi memuatkan fail yang berkaitan dengan MySQL dan kemudian memulakan daemon MySQL. Ini melibatkan konfigurasi

Bagaimana untuk mengoptimumkan prestasi MySQL untuk aplikasi beban tinggi? Bagaimana untuk mengoptimumkan prestasi MySQL untuk aplikasi beban tinggi? Apr 08, 2025 pm 06:03 PM

Panduan Pengoptimuman Prestasi Pangkalan Data MySQL Dalam aplikasi yang berintensifkan sumber, pangkalan data MySQL memainkan peranan penting dan bertanggungjawab untuk menguruskan urus niaga besar-besaran. Walau bagaimanapun, apabila skala aplikasi berkembang, kemunculan prestasi pangkalan data sering menjadi kekangan. Artikel ini akan meneroka satu siri strategi pengoptimuman prestasi MySQL yang berkesan untuk memastikan aplikasi anda tetap cekap dan responsif di bawah beban tinggi. Kami akan menggabungkan kes-kes sebenar untuk menerangkan teknologi utama yang mendalam seperti pengindeksan, pengoptimuman pertanyaan, reka bentuk pangkalan data dan caching. 1. Reka bentuk seni bina pangkalan data dan seni bina pangkalan data yang dioptimumkan adalah asas pengoptimuman prestasi MySQL. Berikut adalah beberapa prinsip teras: Memilih jenis data yang betul dan memilih jenis data terkecil yang memenuhi keperluan bukan sahaja dapat menjimatkan ruang penyimpanan, tetapi juga meningkatkan kelajuan pemprosesan data.

Cara mengoptimumkan prestasi pangkalan data selepas pemasangan MySQL Cara mengoptimumkan prestasi pangkalan data selepas pemasangan MySQL Apr 08, 2025 am 11:36 AM

Pengoptimuman prestasi MySQL perlu bermula dari tiga aspek: konfigurasi pemasangan, pengindeksan dan pengoptimuman pertanyaan, pemantauan dan penalaan. 1. Selepas pemasangan, anda perlu menyesuaikan fail my.cnf mengikut konfigurasi pelayan, seperti parameter innodb_buffer_pool_size, dan tutup query_cache_size; 2. Buat indeks yang sesuai untuk mengelakkan indeks yang berlebihan, dan mengoptimumkan pernyataan pertanyaan, seperti menggunakan perintah menjelaskan untuk menganalisis pelan pelaksanaan; 3. Gunakan alat pemantauan MySQL sendiri (ShowProcessList, ShowStatus) untuk memantau kesihatan pangkalan data, dan kerap membuat semula dan mengatur pangkalan data. Hanya dengan terus mengoptimumkan langkah -langkah ini, prestasi pangkalan data MySQL diperbaiki.

Adakah mysql memerlukan internet Adakah mysql memerlukan internet Apr 08, 2025 pm 02:18 PM

MySQL boleh berjalan tanpa sambungan rangkaian untuk penyimpanan dan pengurusan data asas. Walau bagaimanapun, sambungan rangkaian diperlukan untuk interaksi dengan sistem lain, akses jauh, atau menggunakan ciri -ciri canggih seperti replikasi dan clustering. Di samping itu, langkah -langkah keselamatan (seperti firewall), pengoptimuman prestasi (pilih sambungan rangkaian yang betul), dan sandaran data adalah penting untuk menyambung ke Internet.

See all articles