目前,拳头制作的英雄联盟首部动画作品《双城之战》在腾讯视频独家播出。而事实再次证明,拳头是一家被游戏耽误的动画公司,《双城之战》首映非常成功,豆瓣评分9.2,5星评价占67.5%,。外网《双城之战》好评率高达98%,IMDb评分9.4。
今天,我们就来爬取《双城之战》的视频弹幕,看看观众们都说了什么。

弹幕爬取

url分析

我们先打开《双城之战》第一集,找到弹幕相关的url。

通过对腾讯视频弹幕url的分析,首先通过暴力法删减各参数。
原url为https://mfm.video.qq.com/danmu?otype=json&callback=jQuery191011407213043930708_1636363404138&target_id=7514340188%26vid%3Dp0041eyvryu&session_key=0%2C22%2C1636363405&timestamp=1185&_=1636363404180 删减为https://mfm.video.qq.com/danmu?target_id=7514340188%26vid%3Dp0041eyvryu&timestamp=1185。此时我们发现选取不同集数时target_id会发生变化,因此判断target_id与集数有关。而通过观察timestamp发现,timestamp应该是弹幕的时间戳,是首项为15,公差为30的等差数列,即隔30秒将加载新弹幕数据。因此此项将影响我们对弹幕的爬取。我们进一步将url精简为https://mfm.video.qq.com/danmu?target_id=7514340188%26vid%3Dp0041eyvryu

《双城之战(普通话版)》第一集弹幕爬取。

url = "https://mfm.video.qq.com/danmu?target_id=7514340188%26vid%3Dp0041eyvryu"
# 伪装请求头
headers ={"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36"}n = 1 #这里统计爬取次数
for timestamp in range(15,30,30): #第一集40分08秒,所以我们直接从15爬到2400,间隔30params = {'timestamp':timestamp} #这里更新timetampprint(f"正在爬取第{n}次弹幕")n += 1response = requests.get(url, headers=headers,params=params) #爬取数据res_json = response.json() time.sleep(1) # 防止被封IPfor i in res_json['comments']:# 保存为CSV文件content = i['content']  # 弹幕内容name = i['opername']  # 用户名upcount = i['upcount']  # 点赞数user_degree = i['uservip_degree']  # 会员等级timepoint = i['timepoint']  # 发布时间comment_id = i['commentid']  # 弹幕IDcache = pd.DataFrame({'用户名': [name], '弹幕内容': [content], '会员等级': [user_degree],'评论时间点': [timepoint], '评论点赞': [upcount], '评论id': [comment_id]})df = pd.concat([df, cache])

这里我们可以看一下res_json的内容。

从图中可以看到,弹幕信息都放在comments中,里面存放着每条弹幕的信息,包括id,内容,时间点,用户昵称等。

我们用同样的方法爬取三集的弹幕信息。

数据处理

import numpy as np
import pandas as pd
import jieba
from PIL import Image
from wordcloud import WordCloud

合并数据并过滤信息

这里我们先将三集弹幕汇总,并删除包含nan值的行。

df1 = pd.read_csv("双城之战01.csv",header = 0,encoding="utf-8",dtype=str)
df2 = pd.read_csv("双城之战02.csv",header = 0,encoding="utf-8",dtype=str)
df3 = pd.read_csv("双城之战03.csv",header = 0,encoding="utf-8",dtype=str)# 合并三集弹幕
df = pd.concat([df1,df2,df3])#过滤不需要的字段
df = df[["用户名","弹幕内容","评论点赞","集数"]]#删除包含nan值的行
df.dropna(axis=0,how='any')

jieba弹幕分词

这里我们对弹幕关键词进行统计,并放入字典中。

time_count = {} #定义一个空字典,方便统计弹幕频率# 加载停用词表
stop_words = [line.strip() for line in open(r"停用词表.txt", 'r', encoding='utf-8').readlines()]
stop_words += [' ', '\xa0'] #观察数据,添加两个停用词# 通过观察弹幕数据,添加几个比较重要的关键词
my_words = ['牛逼', '英雄联盟','EDG牛逼','我们是冠军']
for i in my_words:jieba.add_word(i)#jieba分词
for line in df['弹幕内容']:print(line)content = jieba.lcut(line)for word in content:if word not in stop_words:time_count[word] = time_count.get(word,0) + 1

排序筛选

我们筛选频率前100的关键词。

# 对弹幕关键词出现频率进行排序
content = sorted(time_count.items(), key=lambda x:x[1], reverse=True)# 选取出现频率最高的100个关键词
seg_list = ' '.join([d_order[i][0] for i in range(1,100)])

词云图制作

# 这里我们导入背景图
bg = np.array(Image.open(r"jinx.jpeg"))wc = WordCloud(width=1400, height=2200, #设置词云画布大小font_path='C:/Windows/Fonts/simfang.ttf',  # 设置字体,这里我们导入本机的字体mask=bg,  # 设置背景图片,即我们刚刚导入的图片background_color='white',  # 设置背景颜色max_font_size=150,  # 设置字体最大值max_words=200,  # 设置最大显示字数).generate(content)wc.to_file('wordcloud.jpg')

下面是输出结果。

从图中可以看到,出现最多的是EDG、EDG牛(消音bi~)等关键词,看来EDG夺冠的影响还是很大的(这里祝贺EDG夺冠),其次是英雄联盟和动漫中的相关人物名字,金克丝和艾克都出现的次数最多。

总结

今天我们爬取了腾讯视频《双城之战》的弹幕,并对弹幕进行了分析,感兴趣的同学可以对其它属性进行分析。

英雄联盟《双城之战》视频弹幕爬取并分析输出词云相关推荐

  1. python爬取微博数据词云_用Python爬取微博数据生成词云图片

    原标题:用Python爬取微博数据生成词云图片 欢迎关注天善智能 hellobi.com,我们是专注于商业智能BI,大数据,数据分析领域的垂直社区,学习.问答.求职,一站式搞定! 对商业智能BI.大数 ...

  2. GAN英雄联盟双城之战风格迁移

    双城之战风格迁移 写在前面 数据链接地址 如何自己制作 写在后面 写在前面 导师课程需要,让我写个有关GAN的项目指导书.由于本人对英雄联盟的热爱(初一玩到研一只打到了铂金5),将闲来自己跑着玩的双城 ...

  3. 英雄联盟峡谷之巅前100爬取(动态网页+json格式解析)

    目的是爬取英雄联盟官网的峡谷之巅前100的信息,经观察发现,每一页只有25个玩家的信息. 先看网页源代码 看到前面,结构清晰,很好抓取. 到了中间部分发现只有前25个,后面的数据貌似被隐藏了.在此处可 ...

  4. python爬取英雄联盟所有皮肤_用Python爬取英雄联盟(lol)全部皮肤

    小三:"怎么了小二?一副无精打采的样子!" 小二:"唉!别提了,还不是最近又接触了一个叫英雄联盟的游戏,游戏中很多皮肤都需要花钱买,但是我钱不够呀..." 小三 ...

  5. python爬取豆瓣影评生成词云的课程设计报告_Python爬取豆瓣影评,生成词云图,只要简单一步即可实现。...

    最近看了一部电影<绣春刀>,里面的剧情感觉还不错,本文爬取的是绣春刀电影的豆瓣影评,1000个用户的短评,共5W多字.用jieba分词,对词语的出现频率进行统计,再通过wordcloud生 ...

  6. python爬取豆瓣影评生成词云的课程设计报告_简单爬取《小丑》电影豆瓣短评生成词云...

    导语 在前段时间看了杰昆菲尼克斯的小丑电影,心里很好奇大部分观众看完这部电影之后对此有什么评价,然后看了看豆瓣短评之后,觉得通过python把短评中出现最多的单词提取出来,做成一张词云,看看这部电影给 ...

  7. Python3.6+jieba+wordcloud 爬取豆瓣影评生成词云

    在上一篇介绍了如何通过Python爬虫抓取豆瓣电影榜单.Python3.6+Beautiful Soup+csv 爬取豆瓣电影Top250 此篇博客主要抓取豆瓣某个电影的影评,利用jieba分词和wo ...

  8. Python 爬取京东商品评论 + 词云展示

    利用python爬虫爬取京东商品评论数据,并绘制词云展示. 原文链接:https://yetingyun.blog.csdn.net/article/details/107943979 创作不易,未经 ...

  9. 爬取唐诗宋词生成词云

    Python 高并发线程爬取诗词之诗词分析 本节所讲内容: 1.5分钟快速了解爬虫概念 2.beautifulsoup 匹配原则 3.wordcloud 使用详情 实战:爬取中国唐诗宋词,体验文人雅士 ...

最新文章

  1. R语言使用igraph包进行网络(network)可视化实战
  2. ubuntu 常见配置文件
  3. AngularJS自定义指令详解(有分页插件代码)
  4. 【Demo】采购订单收货Bapi
  5. Python学习笔记:面向对象编程(1)
  6. C 实现高性能内存池
  7. Android BroadcastReceiver示例教程
  8. 曲线拐点快速寻找算法+C代码
  9. Docker官方文档阅读笔记
  10. 基于InfluxDBGrafana的JMeter实时性能测试数据的监控和展示
  11. 管理学(第二课)笔记
  12. 什么是JIT编译器?
  13. 使用WLW 写博客的测试
  14. 如何魔改Xilinx Vivado 的MIG IP核
  15. Mock工具介绍,为什么使用Mock?
  16. OpenInventor开发环境配置——以vs2008为例
  17. linux 进程流量统计,Linux进程网络流量统计方法及实现
  18. 【PAT】乙级题目解答合集(c++)
  19. 深度学习在嵌入式设备上的应用
  20. 电子计算机主机房国标,根据国标GB50174-93《电子计算机机房设计规范》.ppt

热门文章

  1. 【转】电容的作用?电容器的作用?
  2. form表单二次封装
  3. php 什么叫 ascii值,ascii码值最大的是什么
  4. mescroll-uni上拉加载失效
  5. Java伽马什么意思,游戏设置中的伽马值是什么意思 | 手游网游页游攻略大全
  6. 有什么Linux书籍推荐吗
  7. 达梦数据库数据守护搭建
  8. 【C语言篇】C预处理器和C库
  9. 使用Multisim软件利用74LS161芯片设计60秒计数器
  10. opencv python高斯滤波