Python 分析到底是谁操纵《庆余年》上了热搜?

2019 年 12 月 5 日 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.
本文为作者投稿,版权归作者个人所有
登录查看更多
0

相关内容

【2020新书】实战R语言4,323页pdf
专知会员服务
100+阅读 · 2020年7月1日
【干货书】流畅Python,766页pdf,中英文版
专知会员服务
224+阅读 · 2020年3月22日
【资源】100+本免费数据科学书
专知会员服务
107+阅读 · 2020年3月17日
算法与数据结构Python,369页pdf
专知会员服务
161+阅读 · 2020年3月4日
《代码整洁之道》:5大基本要点
专知会员服务
49+阅读 · 2020年3月3日
ExBert — 可视化分析Transformer学到的表示
专知会员服务
31+阅读 · 2019年10月16日
一文看懂怎么用 Python 做数据分析
大数据技术
24+阅读 · 2019年5月5日
Linux挖矿病毒的清除与分析
FreeBuf
14+阅读 · 2019年4月15日
抖音爬虫
专知
3+阅读 · 2019年2月11日
我是一个爬虫
码农翻身
12+阅读 · 2018年6月4日
为什么你应该学 Python ?
计算机与网络安全
4+阅读 · 2018年3月24日
Python 爬虫实践:《战狼2》豆瓣影评分析
数据库开发
5+阅读 · 2018年3月19日
教你用Python爬虫股票评论,简单分析股民用户情绪
数据派THU
10+阅读 · 2017年12月12日
【python 自然语言处理】对胡歌【猎场】电视剧评论进行情感值分析
代码这样写不止于优雅(Python版)
数说工作室
4+阅读 · 2017年7月17日
Generating Fact Checking Explanations
Arxiv
9+阅读 · 2020年4月13日
Arxiv
3+阅读 · 2019年3月1日
CoCoNet: A Collaborative Convolutional Network
Arxiv
6+阅读 · 2019年1月28日
Arxiv
6+阅读 · 2018年3月31日
Arxiv
6+阅读 · 2018年3月25日
Arxiv
5+阅读 · 2018年1月30日
VIP会员
相关VIP内容
【2020新书】实战R语言4,323页pdf
专知会员服务
100+阅读 · 2020年7月1日
【干货书】流畅Python,766页pdf,中英文版
专知会员服务
224+阅读 · 2020年3月22日
【资源】100+本免费数据科学书
专知会员服务
107+阅读 · 2020年3月17日
算法与数据结构Python,369页pdf
专知会员服务
161+阅读 · 2020年3月4日
《代码整洁之道》:5大基本要点
专知会员服务
49+阅读 · 2020年3月3日
ExBert — 可视化分析Transformer学到的表示
专知会员服务
31+阅读 · 2019年10月16日
相关资讯
一文看懂怎么用 Python 做数据分析
大数据技术
24+阅读 · 2019年5月5日
Linux挖矿病毒的清除与分析
FreeBuf
14+阅读 · 2019年4月15日
抖音爬虫
专知
3+阅读 · 2019年2月11日
我是一个爬虫
码农翻身
12+阅读 · 2018年6月4日
为什么你应该学 Python ?
计算机与网络安全
4+阅读 · 2018年3月24日
Python 爬虫实践:《战狼2》豆瓣影评分析
数据库开发
5+阅读 · 2018年3月19日
教你用Python爬虫股票评论,简单分析股民用户情绪
数据派THU
10+阅读 · 2017年12月12日
【python 自然语言处理】对胡歌【猎场】电视剧评论进行情感值分析
代码这样写不止于优雅(Python版)
数说工作室
4+阅读 · 2017年7月17日
相关论文
Top
微信扫码咨询专知VIP会员