Pythonを使用して100,000の弾幕をクロールし、ヒットバラエティ番組「BrotherOvercomingToughness」の秘密を発見しました

8月のアップデートチャレンジに参加したのはこれが初日です。イベントの詳細については、8月のアップデートチャレンジを確認してください。

みなさん、こんにちは。私の名前はカイです。

実は先週の木曜日(8月12日)にマンゴーチャンネルで「タフネスを克服したブラザー」の創刊号が放送されて爆発しました。感動的でべたつかず、質感があり、話題になりました。オンライン!

若くて危険な少年、ロックミュージシャン、ラッパー、ダンサー、歌手、カンフー俳優などを同じバラエティ番組に入れると、どのような化学反応が起こりますか?

今日は、10万人の弾幕軍が創刊号で何と言っているか見てみましょう!

1.データプレビュー

今回は、Mango TVの第1話、中話、下話で合計3回の弾幕を集めました。97,331具体的な収集プロセスについては、記事の最後にあるコードを参照してください(比較的簡単です)。

import pandas as pd

df = pd.read_excel('披荆斩棘的哥哥.xlsx')
# 数据字段信息
df.info()
复制代码
<class 'pandas.core.frame.DataFrame'>
Int64Index: 97331 entries, 4 to 33794
Data columns (total 7 columns):
 #   Column       Non-Null Count  Dtype 
---  ------       --------------  ----- 
 0   ids          97331 non-null  string
 1   uid          97331 non-null  Int64 
 2   content      97331 non-null  string
 3   time         97331 non-null  Int64 
 4   v2_up_count  97331 non-null  Int64 
 5   时间           97331 non-null  Int64 
 6   上中下          97331 non-null  string
dtypes: Int64(4), string(3)
memory usage: 6.3 MB
复制代码

データでは、各フィールドの意味は次のとおりです。

ids:弾幕ID

uid: ユーザーID

content:弾丸画面の内容

time:弾幕が送信された時間(このエピソードの開始後のミリ秒に対して)

v2_up_count:弾幕のいいねの数

時間:バレットスクリーンの送信時間(分)

上、中、下:第1期に属する上、中、下の部分の1つ

# 数据预览
df.sort_values(by=['上中下','time'], inplace=True) # 按照上中下集和time排序
df.head()
复制代码

データプレビュー

(
    df.groupby('上中下').agg(弹幕数=('ids', 'count'),
                        时长=('时间', 'max')
                        ).reset_index().style
    .bar(subset='弹幕数', align='zero')
    .bar(subset='时长', color='orange', align='zero')
)
复制代码

基本的に、創刊号のすべてのエピソードは弾幕でいっぱいです(1分で360)

2.ブレットスクリーンの全体的なワードクラウド

ここでは、前のワードクラウド作成ツール「」を使用して描画しています。

全体的なワードクラウドの集中砲火

全体的なワードクラウドから、観客は基本的にハハハの笑いとアハハの賛美でそれを見ていることがわかります。

私が言わなければならないのは、このバラエティ番組はとても幸せです

友達の思いつき

拟声词これらといくつかを削除して、もう一度見てみましょう。グレーターベイエリア(主にChen Xiaochun、Xie Tianhua、Lin Xiaofeng、Zhang Zhilin、Liang Hanwen )、Zhao WenzhuoLi ChengxuanOuyangJing溢美之词からのゲストを見つけることができます張梓琳は弾幕ユーザーの間で最も人気があります!古惑仔

3. 点赞最多的弹幕

点赞前10的弹幕都集中在第1期的集部分,且绝大部分(前4条都是)集中在赵文卓出场表演的那段,把《流星雨》唱成流星锤,哈哈哈!

(
    df.sort_values(by='v2_up_count', ascending=False).head(10).style
    .hide_index()
    .hide_columns(['ids','uid','time'])
)
复制代码

最も好きな弾幕

趙Wenzhuoは流星のハンマーとして歌います

点赞第三的“陈小春:女儿真好”是在介绍赵文卓时的朋友送祝福阶段赵文卓的儿子女儿的祝福时镜头给到的陈小春,然后有网友给出的经典弹幕,很温馨有没有!

终于知道戚薇的快乐了”这条高赞弹幕一定是一个女性网友想出来了,出自39分钟区间李承铉演唱《天上飞》时,帅炸全场!

4. 最疯狂的弹幕狂魔

看到弹幕里有不少二刷、三刷的多刷观众,有多少观众是弹幕狂魔,我们来探一探!

df.groupby('uid')['ids'].count().sort_values(ascending=False).to_frame('弹幕数').reset_index().head()
复制代码

クレイジーバラージマニアック

我们可以看到,有网友居然在4个半小时的第1期里一共打出了176条弹幕,平均0.65条弹幕/分钟,毫无疑问的弹幕狂魔!

抽样20条该网友的弹幕内容,我们发现他是真的爱这个节目,而不是只为某个哥哥而来!

(
    df[df['uid']==3752327606].sample(18).style
    .hide_index()
    .hide_columns(subset='ids')
)
复制代码

ショーに来て

5. 弹幕最热的哥哥们

那么第1期三集33位哥哥们共4个半小时的表演,最受弹幕欢迎的是哪几位哥哥呢?

从弹幕整体词云可看到关键词最多的是大湾区(主要是指陈小春、谢天华、林晓峰、张智霖、梁汉文古惑仔组合)、赵文卓李承铉欧阳靖张云龙

大湾区的哥哥们

df[df['content'].astype('str').str.contains('大湾区|小春|春哥|谢天华|林晓峰|张智霖|梁汉文')]
复制代码

グレーターベイエリアの兄弟

赵文卓

df[df['content'].astype('str').str.contains('赵文卓|卓哥|文卓')]
复制代码

哈哈哈笑死大威天龙

趙Wenzhuo

李承铉

那个,戚薇的快乐李承铉,直呼太帅了

df[df['content'].astype('str').str.contains('李承铉|戚薇')]
复制代码

イ・スンヒョン

欧阳靖

说唱歌手欧阳靖

df[df['content'].astype('str').str.contains('欧阳靖')]
复制代码

Ouyang Jing

张云龙

言承旭と張雲龍の「ライド・ザ・ドラゴン・クイック・シュー」はとても甘い。張承旭が初めて言承旭を見たとき、彼は前に出て相手の手を興奮させて握りしめ、「前にあなたを真似した!」と言った。

df[df['content'].astype('str').str.contains('张云龙|云龙')]
复制代码

張雲龍

より多くの弾丸画面データまたは兄弟の弾丸画面については、バックグラウンドで955と返信して、Mango TVフォルダーに入れてから、自分で再生することができます〜!

6.今回の弾幕は、マンゴーチャンネルをどのように評価しますか?

このマンゴーステーションを称賛する弾幕をたくさん見ました

df[df['content'].astype('str').str.contains('芒果')]
复制代码

7.弾丸画面データ収集プログラム

ソースコードを貼り付けます

import requests
import pandas as pd

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36",
    }

datas = []
# 每集90多分钟,所以100够了!
for i in range(100):
    print(f'\r{i}',end='')
    # 注意观察每集弹幕接口地址规律
    url = f'https://bullet-ali.hitv.com/bullet/2021/08/17/192249/13137070/{i}.json'
    
    r = requests.get(url, headers=headers)
    
    if r.status_code == 200:
        data = r.json()    
        data = data['data']['items']
        datas.extend(data)
    else:
        break

df = pd.DataFrame(datas)

df = df[['ids','uid','content','time','v2_up_count']].fillna(0)

df['时间'] = df.time//60000
复制代码

以上が今回の全内容ですが、このバラエティ番組は今でも一見の価値があり、とても印象的です。

おすすめ

転載: juejin.im/post/6997990440003698724