Python 爬取 201865 条《隐秘的角落》弹幕,发现看剧不如爬山?(1)

myUrl = url.format(tv_id[-4:-2],tv_id[-2:],tv_id,i)

print(myUrl)

res = requests.get(myUrl)

if res.status_code == 200:

btArr = bytearray(res.content)

xml=zlib.decompress(btArr).decode(‘utf-8’)

bs = BeautifulSoup(xml,“xml”)

data = pd.DataFrame(columns=[‘uid’,‘contentsId’,‘contents’,‘likeCount’])

data[‘uid’] = [i.text for i in bs.findAll(‘uid’)]

data[‘contentsId’] = [i.text for i in bs.findAll(‘contentId’)]

data[‘contents’] = [i.text for i in bs.findAll(‘content’)]

data[‘likeCount’] = [i.text for i in bs.findAll(‘likeCount’)]

else:

break

datas = pd.concat([datas,data],ignore_index = True)

datas[‘tv_name’]= str(tv_name)

return datas

注:避免引起不必要的麻烦,本爬虫仅指出关键步骤,不再公开提供。

共爬取得到201865 条《隐秘的角落》弹幕数据。

在这里插入图片描述

弹幕发射器


按照用户id分组并对弹幕id计数,可以得到每位用户的累计发送弹幕数。

#累计发送弹幕数的用户

danmu_counts = df.groupby(‘uid’)[‘contentsId’].count().sort_values(ascending = False).reset_index()

danmu_counts.columns = [‘用户id’,‘累计发送弹幕数’]

danmu_counts.head()

在这里插入图片描述

第一名竟然发送了2561条弹幕,这只是一部12集的网剧啊。

难道他/她是水军?每条都发的差不多?

df_top1 = df[df[‘uid’] == 1810351987].sort_values(by=“likeCount”,ascending = False).reset_index()

df_top1.head(10)

在这里插入图片描述

然而并不是,每一条弹幕都是这位观众的有感而发,可能他/她只是在发弹幕的同时顺便看看剧吧。

这位“弹幕发射器”朋友,在每一集的弹幕量又是如何呢?

在这里插入图片描述

是不是通过上图可以侧面说明个别剧集的戏剧冲突更大,更能引发观众吐槽呢?

“弹幕发射器”同志,11、12集请加大输出!

这些弹幕大家都认同


抛开“弹幕发射器”同志,我们继续探究一下分集的弹幕。

看看每一集当中,哪些弹幕大家都很认同(赞)?

df_like = df[df.groupby([‘tv_name’])[‘likeCount’].rank(method=“first”, ascending=False)==1].reset_index()[[‘tv_name’,‘contents’,‘likeCount’]]

df_like.columns = [‘剧集’,‘弹幕’,‘赞’]

df_like

在这里插入图片描述

每一集的最佳弹幕都是当集剧情的浓缩,这些就是观众们票选出来的梗(吐槽)啊!

应该不算剧透吧,不算吧,不算吧

实在不行我请你去爬山也可

在这里插入图片描述

朝阳东升


除了剧本、音乐等,“老戏骨”和“小演员”们的演技也获得了网友的一致好评。

这部剧虽然短短12集,但故事线不仅仅在一两个人身上。每个人都有自己背后的故事,又因为种种巧合串联在一起,引发观众的持续性讨论。

我们统计一下演员们在弹幕中的出现次数,看看剧中的哪些角色大家提及最多。

a = {‘张东升’:‘东升|秦昊|张老师’, ‘朱朝阳’:‘朝阳’, ‘严良’:‘严良’, ‘普普’:‘普普’, ‘朱永平’:‘朱永平’, ‘周春红’:‘春红|大娘子’, ‘王瑶’:‘王瑶’, ‘徐静’:‘徐静|黄米依’, ‘陈冠声’:‘王景春|老陈|陈冠声’, ‘叶军’:‘叶军|皮卡皮卡’, ‘马主任’:‘主任|老马’, ‘朱晶晶’:‘晶晶’,‘叶驰敏’:‘叶驰敏’}

a = {‘张东升’:‘东升|秦昊|张老师’, ‘朱朝阳’:‘朝阳’, ‘严良’:‘严良’, ‘普普’:‘普普’, ‘朱永平’:‘朱永平’, ‘周春红’:‘春红|大娘子’, ‘王瑶’:‘王瑶’, ‘徐静’:‘徐静|黄米依’, ‘陈冠声’:‘王景春|老陈|陈冠声’, ‘叶军’:‘叶军|皮卡皮卡’, ‘马主任’:‘主任|老马’, ‘朱晶晶’:‘晶晶’,‘叶驰敏’:‘叶驰敏’}

for key, value in a.items():

df[key] = df[‘contents’].str.contains(value)

staff_count = pd.Series({key: df.loc[df[key], ‘contentsId’].count() for key in a.keys()}).sort_values()

先计算出现次数,再利用pyecharts制作极坐标图。

在这里插入图片描述

比较让我疑惑的三个小孩当中的朱朝阳提及量这么低,按理说应该与其其他两位大体相当啊。

又去源数据看了一遍,提及朱朝阳(朝阳)的弹幕确实很少,因为大部分在弹幕中观众一般就叫他“学霸”、“儿子”之类的了。

词云


自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注Python)

nvert/9f49b566129f47b8a67243c1008edf79.png)

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注Python)

img
爬取哔哩哔哩(B站)视频的弹幕,你需要使用B站的API以及处理HTML的能力。由于官方政策,直接爬取实时弹幕通常受到限制,而且可能违反服务款。不过,你可以通过B站提供的开放接口来获取视频信息,包括标题、UP主、发布时间等,但获取实时弹幕并不常规。 如果你只是想获取视频的已公开历史弹幕,可以尝试以下步骤: 1. **获取视频ID**: 首先,你需要访问你想爬取的B站视频页面(例如:https://www.bilibili.com/video/BV某个数字),然后从URL中提取视频ID(通常是BV开头的一串字符)。 2. **使用B站API**: B站提供了开发者平台,可以申请一个应用并获得API密钥。你可以使用`bilibili_api`这样的库来调用`api.live.room.v1.getRoomInfo`或`api.live.room.v1.getDanmuList`这两个API,分别获取房间基本信息和弹幕列表。 ```python from bilibili_api import Live room client = LiveClient(api_key='your_api_key', secret_key='your_secret_key') room_id = 'your_video_id' response = client.get_room_info(room_id) danmu_list = response['data']['digg'] ``` 记得替换`your_api_key`和`your_secret_key`为实际的API密钥。 3. **解析弹幕数据**: 获取到的数据通常包含弹幕的文字、发送时间等信息,你可能需要根据实际情况调整解析逻辑。 4. **保存弹幕数据**: 将解析后的弹幕数据存储到文件或数据库中供后续分析。 5. **遵守B站规定**: 确保你按照B站的开发人员协议(Developer Agreement)进行开发,不要滥用API,避免频繁请求造成服务器压力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值