Python爬取《隐秘的角落》弹幕数据 , 实现简单可视化(附源码)
今天目标爬取201865 条《隐秘的角落》弹幕数据
工具使用开发环境:
win10、python3.6
开发工具:
pycharm
相关模块 :
requests , stylecloud
思路分析1、爬虫获取数据爱奇艺的弹幕数据是以 .z 形式的压缩文件存在的 , 先获取 tvid 列表 , 再根据 tvid 获取弹幕的压缩文件 , 最后对其进行解压及存储 , 大概就是这样一个过程 。
def get_data(tv_name,tv_id):url = 'https://cmts.iqiyi.com/bullet/{}/{}/{}_300_{}.z'datas = pd.DataFrame(columns=['uid','contentsId','contents','likeCount'])for i in range(1,20):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 = https://tazarkount.com/read/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:breakdatas = pd.concat([datas,data],ignore_index = True)datas['tv_name']= str(tv_name)return datas共爬取得到201865 条《隐秘的角落》弹幕数据 。
【python爬取网页内容 附源码 Python爬取《隐秘的角落》弹幕数据,实现简单可视化】

文章插图
2、准备弹幕发射器按照用户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
文章插图
每一集的最佳弹幕都是当集剧情的浓缩 , 这些就是观众们票选出来的梗(吐槽)啊!
实在不行我请你去爬山也可

文章插图
3、朝阳东升除了剧本、音乐等 , “老戏骨”和“小演员”们的演技也获得了网友的一致好评 。
这部剧虽然短短12集 , 但故事线不仅仅在一两个人身上 。每个人都有自己背后的故事 , 又因为种种巧合串联在一起 , 引发观众的持续性讨论 。
我们统计一下演员们在弹幕中的出现次数 , 看看剧中的哪些角色大家提及最多 。
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()
文章插图
比较让我疑惑的三个小孩当中的朱朝阳提及量这么低 , 按理说应该与其其他两位大体相当啊 。
又去源数据看了一遍 , 提及朱朝阳(朝阳)的弹幕确实很少 , 因为大部分在弹幕中观众一般就叫他“学霸”、“儿子”之类的了 。
4、词云总所周知 , 一篇数分文章不能少了词云 。
每篇的词云都尽量跟上篇文章不同 , 这次我采用的是stylecloud,它算是wordcloud词云包的升级版 , 看起来美观多了 。
import stylecloudfrom IPython.display import Image stylecloud.gen_stylecloud(text=' '.join(text1), collocations=False,font_path=r'?C:\Windows\Fonts\msyh.ttc',icon_name='fas fa-play-circle',size=400,output_name='隐秘的角落-词云.png')Image(filename='隐秘的角落-词云.png')
文章插图
除了主角的名字以外 , 在这部以“孩子”为主题的剧中 , 对孩子的思想、行为的探讨占据重要部分 , 另外 , 剧中从年长的戏骨到年幼的孩子 , 每一个人都贡献了高光的演技 , 对他们演技的称赞也成为高频词汇 。
而最出圈的“爬山”梗 , 更是被频频提及 。
从《无证之罪》到《隐秘的角落》 , 都在证明悬疑犯罪题材在当下并非没有市场 , 要收获高人气高口碑 , 如何传播与营销终归只是手段 , 越来越多的团队沉下心来打磨精品剧集 , 观众才会愿意为剧买单 , 让“爬山”这样的梗一步步“出圈” 。
文章到这里就结束了 , 感谢你的观看 , Python数据分析系列 , 下篇文章分享Python 爬取鲁迅先生《经典语录》
为了感谢读者们 , 我想把我最近收藏的一些编程干货分享给大家 , 回馈每一个读者 , 希望能帮到你们 。
干货主要有:
① 2000多本Python电子书(主流和经典的书籍应该都有了)
② Python标准库资料(最全中文版)
③ 项目源码(四五十个有趣且经典的练手项目及源码)
④ Python基础入门、爬虫、web开发、大数据分析方面的视频(适合小白学习)
⑤ Python学习路线图(告别不入流的学习)
⑥ 两天的Python爬虫训练营直播权限
All done~详见个人简介或者私信获取完整源代码 。。
往期回顾Python实现“假”数据
Python爬虫鲁迅先生《经典语录》
Python爬虫豆瓣热门话题
- 春季老年人吃什么养肝?土豆、米饭换着吃
- 三八妇女节节日祝福分享 三八妇女节节日语录
- 老人谨慎!选好你的“第三只脚”
- 校方进行了深刻的反思 青岛一大学生坠亡校方整改校规
- 脸皮厚的人长寿!有这特征的老人最长寿
- 长寿秘诀:记住这10大妙招 100%增寿
- 春季老年人心血管病高发 3条保命要诀
- 眼睛花不花要看四十八 老年人怎样延缓老花眼
- 香槟然能防治老年痴呆症? 一天三杯它人到90不痴呆
- 老人手抖的原因 为什么老人手会抖
