百家乐必知技巧
大數據

會唱歌的程序員為何如此受歡迎?

廣告
廣告

 作者 朱小五

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

值得一提的是,這只樂隊的吉他手兼主唱也是一位程序員。

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

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

讓我來復盤一下。

獲取數據

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

F12,Network查看異步請求XHR,找到評論接口。

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

https://sns-comment.iqiyi.com/v3/comment/get_comments.action?
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=[40, 70], 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=[18, 250])
wordcloud

還是使用pyecharts作圖。

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

刺猬總是強調搖滾樂是屬于年輕人的,35歲之后可能就不那么搖滾了。

不過35歲之后,他們又將去向哪里呢?

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

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

文章轉載自公眾號  凹凸玩數據 

我還沒有學會寫個人說明!

滴滴大數據在汽車金融風控場景中的應用

上一篇

穩定彰顯強悍實力,商務辦公首選ThinkPad L490

下一篇

你也可能喜歡

會唱歌的程序員為何如此受歡迎?

長按儲存圖像,分享給朋友

ITPUB 每周精要將以郵件的形式發放至您的郵箱


微信掃一掃

微信掃一掃
百家乐必知技巧 上海天天彩选4今晚开奖号码结果 贵州11选5走势图表 查看河北福彩排列五 2014264期福彩开奖号码 足彩胜负彩比分直播 北京快乐8开奖记录 快乐扑克三走势图 棒球比分直播运彩即时比分 鸿利彩票群 极速快乐十分走势