《庆余年》值得一看吗?Python告诉你谁在关注 | CSDN原力计划
扫码参与CSDN“原力计划”
作者 | A字头
来源 | 数据札记倌
庆余年电视剧终于在前两天上了,这两天赶紧爬取数据看一下它的表现。
庆余年
《庆余年》是作家猫腻的小说。这部从2007年就开更的作品拥有固定的书迷群体,也在文学IP价值榜上有名。
期待已久的影视版的《庆余年》终于播出了,一直很担心它会走一遍《盗墓笔记》的老路。
在《庆余年》电视剧上线后,就第一时间去看了,真香。
庆余年微博传播分析
《庆余年》在微博上一直霸占热搜榜,去微博看一下大家都在讨论啥:
一条条看显然不符合数据分析师身份。
于是爬取了微博超话页面,然后找到相关人员,分别去爬取相关人员的微博评论,看看大家都在讨论啥。
import argparse
parser = argparse.ArgumentParser(description="weibo comments spider")
parser.add_argument('-u', dest='username', help='weibo username', default='') #输入你的用户名
parser.add_argument('-p', dest='password', help='weibo password', default='') #输入你的微博密码
parser.add_argument('-m', dest='max_page', help='max number of comment pages to crawl(number<int> larger than 0 or all)', default=) #设定你需要爬取的评论页数
parser.add_argument('-l', dest='link', help='weibo comment link', default='') #输入你需要爬取的微博链接
parser.add_argument('-t', dest='url_type', help='weibo comment link type(pc or phone)', default='pc')
args = parser.parse_args()
wb = weibo()
username = args.username
password = args.password
try:
max_page = int(float(args.max_page))
except:
pass
url = args.link
url_type = args.url_type
if not username or not password or not max_page or not url or not url_type:
raise ValueError('argument error')
wb.login(username, password)
wb.getComments(url, url_type, max_page)
相关函数已经封装好,后台回复“微博”下载直接使用。
如何利用Python生成词云图
爬取到微博评论后,老规矩,词云展示一下,不同主角的评论内容差别还是挺大的。
张若昀:
李沁:
肖战:
emmm....算了吧
从目前大家的评论来看,情绪比较正向,评价较高,相信《庆余年》会越来越火的。
这部剧在微博热度这么高,都是谁在传播呢?
于是我进一步点击用户头像获取转发用户的公开信息。
看了一下几位主演的相关微博,都是几十万的评论和转发,尤其是肖战有百万级的转发,尝试爬了一下肖战的微博,执行了6个小时的结果,大家随意感受一下执行过程:
最终还是败给了各位小飞侠,之后有结果再同步给大家。
于是我只能挑软柿子捏,换成官微的微博。
这条微博发布时间是26号,经过一段时间已经有比较好的传播,其中有几个关键节点进一步引爆话题。
经过几个关键节点后,进一步获得传播,这几个关键节点分别是:
肖战的超话:https://weibo.com/1081273845/Ii1ztr1BH
王小亚的微博:https://weibo.com/6475144268/Ii1rDEN6q
继续看一下转发该微博的用户分析:
整体看下来,庆余年官微的这条微博90%都是普通用户的转发,这部剧转发层级达到5层,传播范围广,在微博上的讨论女性居多(占比89%),大部分集中在一二线城市。
原著人物关系图谱
如果只看微博,不分析原著,那就不是一个合格的书粉。
于是我去下载了原著画一下人物关系图谱。
先给大家看一下原著的人物关系图谱:
emmm.....确实挺丑的,大家可以去Gephi上调整。
首先我需要从原著里洗出人物名,尝试用jieba分词库来清洗:
import jieba
test= 'temp.txt' #设置要分析的文本路径
text = open(test, 'r', 'utf-8')
seg_list = jieba.cut(text, cut_all=True, HMM=False)
print("Full Mode: " + "/ ".join(seg_list)) # 全模式
发现并不能很好的切分出所有人名,最简单的方法是直接准备好人物名称和他们的别名,这样就能准确定位到人物关系。
存储好人物表,以及他们对应的别名(建立成字典)
def synonymous_names(synonymous_dict_path):
with codecs.open(synonymous_dict_path, 'r', 'utf-8') as f:
lines = f.read().split('\n')
for l in lines:
synonymous_dict[l.split(' ')[0]] = l.split(' ')[1]
return synonymous_dict
接下来直接清理文本数据:
def clean_text(text):
new_text = []
text_comment = []
with open(text, encoding='gb18030') as f:
para = f.read().split('\r\n')
para = para[0].split('\u3000')
for i in range(len(para)):
if para[i] != '':
new_text.append(para[i])
for i in range(len(new_text)):
new_text[i] = new_text[i].replace('\n', '')
new_text[i] = new_text[i].replace(' ', '')
text_comment.append(new_text[i])
return text_comment
我们需要进一步统计人物出现次数,以及不同人物间的共现次数:
text_node = []
for name, times in person_counter.items():
text_node.append([])
text_node[-1].append(name)
text_node[-1].append(name)
text_node[-1].append(str(times))
node_data = DataFrame(text_node, columns=['Id', 'Label', 'Weight'])
node_data.to_csv('node.csv', encoding='gbk')
结果样例如下:
不愧是主角,范闲出现的次数超过了其他人物出现次数的总和,基本每个人都与主角直接或间接地产生影响。
同理可以得到不同人物的边,具体代码参考源文件。
接下来需要做的就是利用Gephi绘制人物关系图谱:
运行结果:
参考文献:Ren, Donghao, Xin Zhang, Zhenhuang Wang, Jing Li, and Xiaoru Yuan. "WeiboEvents: A Crowd Sourcing Weibo Visual Analytic System." In Pacific Visualization Symposium (PacificVis) Notes, 2014 IEEE, pp. 330-334. IEEE, 2014.
数据和源码下载
链接:https://pan.baidu.com/s/1gr8h5BX4X6zm3E3b4bYrRw
密码:oxjs
点击阅读原文,查看作者更多文章!
技术的道路一个人走着极为艰难?
一身的本领得不施展?
优质的文章得不到曝光?
别担心,
即刻起,CSDN 将为你带来创新创造创变展现的大舞台,
扫描下方二维码,欢迎加入 CSDN 「原力计划」!
◆
精彩推荐
◆
开幕倒计时3天!2019 中国大数据技术大会(BDTC)即将震撼来袭!豪华主席阵容及百位技术专家齐聚,十余场精选专题技术和行业论坛,超强干货+技术剖析+行业实践立体解读。
推荐阅读
一张图生成定制版二次元人脸头像,还能“模仿”你的表情
激辩:机器究竟能否理解常识?
阿里正式开源通用算法平台Alink,“双11”将天猫推荐点击率提升4%
最新单步目标检测框架,引入双向网络,精度和速度均达到不错效果
从拨号到 5G :互联网登录完全指南
测试小白必读!从0基础做到「大厂测试」,要掌握什么技能?
科技公司最爱的50款开源工具,你都用过吗?
OceanBase 的前世今生
想做好区块链数据分析?先来看看如何解决“去匿名化”这个大难题
把700元的单片机改造成以太坊节点, 9步get起新技能
你点的每个“在看”,我都认真当成了AI
相关文章:

《C语言及程序设计》实践项目——画分支结构流程图
返回:贺老师课程教学链接 【单分支结构流程图-大值】问题:画流程图,输入两个整数a和b,输出其中的大值。提示:当a<b时,交换a和b,最后输出的a一定是其中的大值。流程图中可以直接给出交换a和b…

汇编程序设计与计算机体系结构软件工程师教程笔记:内联汇编与宏
《汇编程序设计与计算机体系结构: 软件工程师教程》这本书是由Brain R.Hall和Kevin J.Slonka著,由爱飞翔译。中文版是2019年出版的。个人感觉这本书真不错,书中介绍了三种汇编器GAS、NASM、MASM异同,全部示例代码都放在了GitHub上,…
无需标注数据,利用辅助性旋转损失的自监督GANs,效果堪比现有最好方法
作者 | Ting Chen译者 | 王红成出品 | AI科技大本营(ID:rgznai100)本文作者提出了一种自检督方式的生成对抗网络,通过辅助性的旋转损失来达到目的。因为通常主流方法来生成自然图像都是通过条件GAN来完成,但是这就需要很多的标签数…

iOS环信聊天界面中点击头像和消息的几种状态
/*环信自带头像点击事件*/ - (void)messageViewController:(EaseMessageViewController *)viewControllerdidSelectAvatarMessageModel:(id<IMessageModel>)messageModel {内容可以根据需要自己添加 }/*!methodbrief 点击了简历消息 (lyq添加)discussion 点击了简历消息,…

ASP.NET将Session保存到数据库中
因为ASP.NET中Session的存取机制与ASP相同,都是保存在进行中, 一旦进程崩溃,所有Session信息将会丢失,所以我采取了将Session信息保存到SQL Server中,尽管还有其它的几个方式(本文不作介绍)&…

iOS App上架流程
一、前言:作为一名iOSer,把开发出来的App上传到App Store是必要的。下面就来详细讲解一下具体流程步骤。 二、准备: 一个已付费的开发者账号(账号类型分为个人(Individual)、公司(Company&#…
不止Markov决策过程,全景式分析强化学习研究内容
作者 | 肖智清编辑 | 刘静来源 | CSDN(ID:CSDNnews)强化学习作为通用人工智能的希望,吸引了很多人工智能爱好者学习和研究。Markov决策过程是最知名的强化学习模型,强化学习教程也常以Markov决策过程作为起点。但是&am…

Windows下创建进程简介
正在执行的应用程序称为进程,进程不仅仅是指令和数据,它还有状态。状态是保存在处理器寄存器中的一组值,如当前执行指令的地址、保存在内存中的值,以及唯一定义进程在任一时刻任务的所有其他值。进程与应用程序的一个重要的区别在…

jQuery中鲜为人知的的几个方法
转来学习一下 jQuery中鲜为人知的的几个方法 jQuery近些年来仍旧是web开发中最受欢迎的类库,虽然大家褒贬不一,但是仍旧不失为一款最流行的Javascript,在今天这篇文章中,我们将介绍几个jQuery的相关方法,无论你是入门级…

Linux下创建进程简介
在博文https://blog.csdn.net/fengbingchun/article/details/108940548中简单介绍了Windows下通过函数CreateProcess创建进程的过程,这里简单介绍下Linux下通过fork函数创建进程的过程。很早之前在https://blog.csdn.net/fengbingchun/article/details/45690745中也…

热更新 FrameWork
工作中遇到想要绕过AppStore直接更新App的要求!这里友情提示下,看了很多资料只是是实现了功能,但在项目中并没有真正用到!资料大多都显示会被拒,这个说的是个人级的,好像企业级的不会这样,仅仅是项目需要做…
陆首群:评人工智能如何走向新阶段?
作者 | 陆首群,中国开源软件推进联盟名誉主席 出品 | AI科技大本营(ID:rgznai100) 编者按:近来,业内关于深度学习算法的潜力是否已达天花板的争论陆续发出。有人认为,基于深度学习算法的应用还有深度开拓空…

Mysql INSERT、REPLACE、UPDATE的区别
用于操作数据库的SQL一般分为两种,一种是查询语句,也就是我们所说的SELECT语句,另外一种就是更新语句,也叫做数据操作语句。言外之意,就是对数据进行修改。在标准的SQL中有3个语句,它们是INSERT、UPDATE以及…

软件调试的艺术笔记:GDB
很久之前,在https://blog.csdn.net/fengbingchun/article/details/41413381中简单整理过gdb中常用的一些命令,不齐全,这里按照《软件调试的艺术》一书中关于gdb的介绍再做次整理。《软件调试的艺术》于2009年由人民邮电出版社出版。 1. 预备…

App Store 审核被拒整理
整理以前和现在遇到的审核被拒第一:2.2 DetailsWe discovered one or more bugs in your app when reviewed on iPhone running iOS 8.1.3 on both Wi-Fi and cellular networks. Specifically, we were not able to complete the In App Purchase. When tapped on …
只服这篇“神文”:基于老子哲学、相对论的超级人工智能模型
作者 | Anonymous authors译者 | TroyChang出品 | AI科技大本营(ID:rgznai100)在此前我们为大家介绍 ICLR 2020 论文投稿情况时,提到了一篇“神作”在论文中作者们提出一个 ASI 概念(Artificial Super Intelligence&am…

Navicat Premium使用教程【比较详细】
Navicat Premium使用教程简介:Navicat Premium是众所周知的数据库操作软件。本文比较详细。1、打开Navicat Premium,点击连接,选择MySQL,创建新连接。输入安装MySQL是的用户名和密码。点击确定。2、admin数据连接已经创建成功。下…
如何用Neo4j和Scikit-Learn做机器学习任务?| 附超详细分步教程
作者 | Mark Needham译者 | Tianyu、Shawnice编辑 | Jane出品 | AI科技大本营(ID:rgznai100)图算法不是一个新兴技术领域,在开源库中已经有很多功能强大的算法实现。近两年,业内的学者与科学家都在积极探索可以弥补深度…

Docker在Ubuntu16.04和Windows10家庭版上安装操作步骤
之前在 https://blog.csdn.net/fengbingchun/article/details/109559500 中对Docker作了简单的介绍,这里介绍下Docker在Ubuntu16.04 x86_64 64位上和Windows10 x86_64 64位家庭版上的安装过程。 在Ubuntu上安装Docker(或Docker引擎),Ubuntu必须是64位的…

iOS 不同机型屏幕适配
// .pch 文件中写 // 判断是iPhone机型 /** 4s 960 * 640* 5/5s 1136 x 640* 6/6s/7/8 4.7英寸 1334 x 750* 6p/6sp/7p/8p 5.5英寸 1920 x 1080* X 5.8英寸 2436 x 1125}*/ #define IS_IPHONE_4s [UIScreen instancesRespondToSelector:selector(currentMode)] ? \ CGSizeEqua…

北京中天荣泰视觉检测 仿真
www.romtek.cnhttp://jobs.zhaopin.com/191485013250433.htm?ssidkeyy&ff01&ss101转载于:https://www.cnblogs.com/pengkunfan/p/4316018.html

Docker客户端常用命令整理
之前在 https://blog.csdn.net/fengbingchun/article/details/109584460 中介绍过在Windows10家庭版和Ubuntu16.04上安装Docker的操作步骤,这里整理下Docker客户端常用命令。 在Windows10家庭版上运行Docker后,通过VMware就不能打开Ubuntu16.04虚拟机了…
深度学习入门笔记,三流程序员如何凭借实力逆袭高薪?你不服不行!
最近经常有朋友提及,想要入门深度学习,该如何学习?关于深度学习,网上的资料很多,不过貌似大部分都不太适合初学者。 我曾经是一名三流程序员,每天的工作内容就是在前人留下的 bug 上写新的bug,我…

Swift编程语言
The Swift Programming Language中文手册1.【精校版】The Swift Programming Language--欢迎使用Swift--关于Swift2.【精校版】The Swift Programming Language-欢迎使用Swift-Swift 初见3.The Swift Programming Language--语言指南--基础部分4.The Swift Programming Languag…

ondblog 修改informix日志模式
-N No Logging 没有日志-U Unbuffered Logging 非缓冲日志-B Buffered Logging 缓冲日志-A Unbuffered Logging, Mode ANSI ANSI模式No Logging 没有日志----“没有日志”模式只向逻辑日志写很少的信息,它只记录执行的DDL语句,这些语句影响到的行并…

iOS RunLoop详解
一、简介 CFRunLoopRef源码RunLoop是一个对象,这个对象在循环中用来处理程序运行过程中出现的各种事件(比如说触摸事件、UI刷新事件、定时器事件、Selector事件),从而保持程序的持续运行;而且在没有事件处理的时候&…

开源库jemalloc简介
jemalloc是通用的malloc(3)实现,它强调避免碎片和可扩展的并发支持。它的源码位于https://github.com/jemalloc/jemalloc,最新稳定版本为5.2.1。 glibc的内存分配算法是基于dlmalloc实现的ptmalloc;tcmalloc是Google开发的内存分配器&#x…
改善深度学习训练的trick总结 | CSDN博文精选
扫码参与CSDN“原力计划”作者 | ZesenChen来源 | CSDN博客精选在深度学习中,同样一个模型用不同的初始化,数据处理,batch size,学习率,优化器都能得到不同性能的参数。我根据自己参与过的比赛中经常用到的一些trick进…

jQuery中的Ajax----03
为什么80%的码农都做不了架构师?>>> $.ajax(0方式是jQuery最底层的Ajax实现。 它的结构为: $.ajax(options) 该方法只有1个参数,但在这个对象里包含了$.ajax()方法所需要的请求设置以及回调函数等信息。参数以key/value的形式存在࿰…

Docker容器中数据两种持久化存储方式:卷和挂载宿主目录
镜像使用的是分层存储,容器也是如此。每一个容器运行时,是以镜像为基础层,在其上创建一个当前容器的存储层,我们可以称这个为容器运行时读写而准备的存储层为容器存储层。容器存储层的生存周期和容器一样,容器消亡时&a…