會唱歌的程式設計師為何如此受歡迎?

xulinlucas發表於2022-12-08

文章轉載自公眾號  凹凸玩資料 

 作者 朱小五

會唱歌的程式設計師為何如此受歡迎?

愛奇藝的獨家綜藝《樂隊的夏天》總決賽終於落下了帷幕,雖然決賽過程有些“曲折”,但是我最喜歡的刺蝟樂隊,仍然憑藉自己的硬實力,最終排在第二名!

值得一提的是,這隻樂隊的吉他手兼主唱也是一位程式設計師。

會唱歌的程式設計師為何如此受歡迎?

刺蝟樂隊其實成立10多年了,很有實力。

但是在老牌樂隊雲集的這次比賽中,第一次31進16時僅僅排在第12名,那麼他又是如何逆風翻盤的?

讓我來複盤一下。

獲取資料

獲取愛奇藝影片《樂隊的夏天》各期節目的下面的評論。

會唱歌的程式設計師為何如此受歡迎?

F12,Network檢視非同步請求XHR,找到評論介面。

會唱歌的程式設計師為何如此受歡迎?

不要以為這裡結束了,我們來看一下Request URL


content_id=2537368600&types=time&last_id=213811925021
&business_type=17&agent_type=119&agent_version=9.9.0&authcookie=

經過測試,大部分引數都是不變的,只有“content_id”和“last_id”,content_id對於每一期節目是固定的,我們可以自己手動獲分析獲得。那麼last_id是怎麼來的?

給大家放一下連續幾頁的 last_id 看一下吧。

213811925021

213372828221

212600215021

211973666621

它們之間並沒有什麼累加的規律。

放棄的同學可以直接翻到上一張圖,標黃的部分“213811925021”,正是我們看到的第一個 last_id 引數。

也就是說每個json裡的最後一個 CommentId ,作為下一個url的 last_id 使用。

那麼我們需要注意的就是在解析json的過程中需要返回最後一個 CommentId 。

def get_comments(url):
    data = []
    doc = get_json(url)
    jobs=doc['data']['comments']
    for job in jobs:
        dic = {}
        global CommentId
        CommentId=jsonpath.jsonpath(job,'$..id')[0#id
        dic['id'] = CommentId
        dic['content']=jsonpath.jsonpath(job,'$..content')[0#評論
        add_Time=jsonpath.jsonpath(job,'$..addTime')[0]  #時間
        dic['addTime'] = stampToTime(add_Time)  #轉化時間格式
        dic['uid']=jsonpath.jsonpath(job['userInfo'],'$..uid')[0#使用者id
        dic['uname']=jsonpath.jsonpath(job['userInfo'],'$..uname')[0#使用者名稱稱
        dic['gender']=jsonpath.jsonpath(job['userInfo'],'$..gender')[0#性別
        data.append(dic)
    return data,CommentId #獲得每個json裡的最後一個CommentId 
剩下的迴圈爬取就好。
彙總後就獲得了2.6萬條評論資料。

會唱歌的程式設計師為何如此受歡迎?


資料分析

一個樂隊名稱在每期評論中的提及次數,可以側面反映這隻樂隊在這期節目後受到觀眾喜歡的程度。

#樂隊在評論中的提及數
a = {'痛仰':'痛仰''新褲子':'褲子','猴子軍團':'猴子軍團','鹿先森':'鹿先森','旺福':'旺福','九連真人':'九連','盤尼西林':'盤尼西林|青黴素',
    '反光鏡':'反光鏡','click15':'click15|#15','海龜先生':'海龜先生','皇后皮箱':'皇后皮箱','面孔':'面孔','和平和浪':'和平和浪','MR.MISS':'MR.MISS|MISS',
    'VOGUE5':'VOGUE5|VOGUE','薄荷綠':'薄荷綠','熊貓眼':'熊貓眼','果味VC':'果味VC','BONGBONG':'BONGBONG','醒山':'醒山','刺蝟':'刺蝟','旅行團':'旅行團',
    '麋鹿王國':'麋鹿王國','宇宙人':'宇宙人','黑撒':'黑撒','南無':'南無','斯斯與帆':'斯斯與帆','葡萄不憤怒':'葡萄不憤怒','茶涼粉':'茶涼粉',
    '青年小夥子':'青年小夥子','Mr.WooHoo':'Mr.WooHoo|WooHoo',}
for key, value in a.items():
    data1[key] = data1['content'].str.contains(value)
staff_count = pd.Series({key: data1.loc[data1[key], 'content'].count() for key in a.keys()}).sort_values()
print(staff_count)

以第一期為例,結果如下。

會唱歌的程式設計師為何如此受歡迎?

每期節目的樂隊排名都依次降序盤點彙總一下。

會唱歌的程式設計師為何如此受歡迎?

結果還蠻驚訝的。

除去第二期他們沒有參加,也就是說從第三期開始,刺蝟樂隊便開始展現實力,幾乎每一期都能讓觀眾如此喜歡。

會唱歌的程式設計師為何如此受歡迎?

資料視覺化

篩選出評論中提到刺蝟樂隊的評論資料。

data_ciwei= data[data['content'].str.contains('刺蝟')]

爬取得到的資料欄位其實沒幾個。

簡單看一下喜歡他們的觀眾的性別分佈。

from pyecharts import Pie
# 生成餅圖

gender_data = data_ciwei.groupby(['gender'])
gender_cw = gender_data['gender'].agg(['count'])
gender_cw.reset_index(inplace=True)

attr = ['女''男''無']
v1 = gender_cw['count']
pie = Pie("評論提及刺蝟樂隊的使用者性別分佈", title_pos='center', title_top=0)
pie.add("", attr, v1, radius=[4070], label_text_color=None, is_label_show=True, legend_orient="vertical", legend_pos="left", legend_top="%10")
pie

使用pyecharts作圖。

會唱歌的程式設計師為何如此受歡迎?

至於評論的長度之類的就不做分析了。

最後看一下詞雲,不用jieba分詞試試。

from pyecharts import WordCloud
# 生成詞雲

bj_tag = []
for st in data_ciwei.dropna(subset=['content'])['content']:
    bj_tag.extend(st.split(' '))

name, value = WordCloud.cast(Counter(bj_tag))
wordcloud = WordCloud(width=1000, height=500)
wordcloud.add("", name, value, word_size_range=[18250])
wordcloud

還是使用pyecharts作圖。

會唱歌的程式設計師為何如此受歡迎?

可以看出觀眾對於刺蝟樂隊的要麼是直接誇,要麼是和其他強隊做對比,總體都是希望它能越來越好。

刺蝟總是強調搖滾樂是屬於年輕人的,35歲之後可能就不那麼搖滾了。

不過35歲之後,他們又將去向哪裡呢?

也許等到中年的子健,面對著年輕的樂手們會說:

我不是針對誰,我是說在坐的各位,都沒我程式碼寫的好!

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31555699/viewspace-2654172/,如需轉載,請註明出處,否則將追究法律責任。

相關文章