原文链接:http://www.tbk.ren/article/256.html?source=csdn

昨晚陈老师不知因何事忽然在微博上骂女神志玲姐姐,引起来网友们的热闹围观,导致前几天风风火火的汪峰的前妻吸毒的事件,顿时落下帷幕,汪峰老师好不容易上了一次头条,就这么被硬生生的扯下来了。
  
当然,这条微博火了之后,陈老师把它删了,只留下这条了,我们接下来的分析,都是基于这条微博的评论的。
好,开篇写好了,我们直接进入主题,作为一名技术宅,如何使用R语言,来分析一下,这个热点事件背后的数据意义。
首先当然是要去抓取数据,这里因为笔者有一个网站,它通过了新浪微博开放平台的审核,因此可以使用微博的API接口进行数据的获取,当然能获取到的数据也不多,评论数据只能获取40页,每页50条左右,也就是2000条。虽然对于陈老师这种上千万粉的人来说,简直是毛毛雨,但是并不影响我们使用它来做一下简单的分析。
library(XML);
library(RCurl);
library(RJSONIO);
page <- 1;
times <- 3;
GoOn = TRUE;
sleepTime <- 1;
while(GoOn) {
  url <- paste(
"https://api.weibo.com/2/comments/show.json?",
"id=4001968182199220&",
"page=", page, "&",
"access_token=这里很私密,就是通过验证的token,我当然不会告诉你啦",
sep = ""
  );
  print(url)
  commentJSONString <- getURL(
url, 
.opts = list(ssl.verifypeer = FALSE)
  );
  
  commentJSON <- fromJSON(commentJSONString);
  
  len <- length(commentJSON$comments)
  print(len)
  if(len==0) {
print("需要休息一下下")
sleepTime <- sleepTime+1;
if(sleepTime>10) {
  GoOn <- FALSE;
}
  } else {
result <- data.frame(
  id=c(NA),
  gender=c(NA),
  followers_count=c(NA),
  friends_count=c(NA),
  pagefriends_count=c(NA),
  statuses_count=c(NA),
  favourites_count=c(NA),
  created_at=c(NA),
  verified=c(NA),
  verified_type=c(NA),
  verified_reason=c(NA),
  verified_trade=c(NA),
  lang=c(NA),
  urank=c(NA),
  screen_name=c(NA),
  name=c(NA),
  location=c(NA),
  description=c(NA),
  text=c(NA)
);
for(i in 1:len) {
  result[i, ] <- c(
commentJSON$comments[[i]]$user$idstr,
commentJSON$comments[[i]]$user$gender,
commentJSON$comments[[i]]$user$followers_count,
commentJSON$comments[[i]]$user$friends_count,
commentJSON$comments[[i]]$user$pagefriends_count,
commentJSON$comments[[i]]$user$statuses_count,
commentJSON$comments[[i]]$user$favourites_count,
commentJSON$comments[[i]]$user$created_at,
commentJSON$comments[[i]]$user$verified,
commentJSON$comments[[i]]$user$verified_type,
commentJSON$comments[[i]]$user$verified_reason,
commentJSON$comments[[i]]$user$verified_trade,
commentJSON$comments[[i]]$user$lang,
commentJSON$comments[[i]]$user$urank,
commentJSON$comments[[i]]$user$screen_name,
commentJSON$comments[[i]]$user$name,
commentJSON$comments[[i]]$user$location,
commentJSON$comments[[i]]$user$description,
commentJSON$comments[[i]]$text
  )
}
write.csv(
  result, row.names=FALSE,
  col.names=FALSE, fileEncoding = "UTF-8",
  file=paste("data/result_", times, "_", page, ".txt", sep = "")
);
page <- page+1;
  }
  Sys.sleep(sleepTime);
}
抓取完成后,得到了用户的一些属性以及评论的内容。
 
好,既然是评论,我们首先当然要来一发词云分析先。
library(tm)
library(Rwordseg)
installDict('明星【官方推荐】.scel', '明星')
contentCorpus <- Corpus(VectorSource(na.omit(d$text)))
contentCorpus <- tm_map(contentCorpus, stripWhitespace)
contentCorpus= tm_map(contentCorpus, content_transformer(segmentCN), returnType='tm')
#tm分词对中文分词Bug解决方案
tokenizer <- function(x){
  unlist(
strsplit(
  x$content,
  '[[:space:]]+'
)
  )
}
tdm <- TermDocumentMatrix(
  contentCorpus,
  control=list(
wordLengths=c(1,Inf),
tokenize=tokenizer
  )
)
#转成向量矩阵
tdm <- as.matrix(tdm)
library(wordcloud)
v <- sort(rowSums(tdm), decreasing = TRUE)
d <- data.frame(word = names(v), freq = v)
d <- d[1:300, ]
wordcloud(
  d$word, 
  d$freq, 
  min.freq=2, 
  random.order=F, 
  colors=rainbow(length(row.names(d)))
)
执行这段代码,我们可以得到以下的词云:
 
可以看到,网友们对于陈老师的这种无端端撕B的行为,一致认为是“你,的,不,是”。陈老师,看到后,也回复了网友的关心:  
好了,大家的态度,陈老师收到了,你们喜欢或者是不喜欢,陈老师还是当年的陈老师,粉丝量还是上两千万的陈老师。
好,接着我们来分析一下网友们的特征。
genderTable <- prop.table(table(d$gender))
 
女网友竟然占比达到65%,好惊讶,是因为志玲姐姐男女通吃,还是陈老师魅力不减当年,还有一堆的女性摄影爱好者粉丝呢……
 
接着我们来看看网友们的地区分布:
locationTable <- prop.table(table(d[, "1"][d[, "1"]!="其他"]))
这个就不出所料了,港东银占据了榜首,不愧是和陈老师发源地比较近。
接着,我们看看用户的加V情况。
verifiedTable <- prop.table(table(d$verified))
 
看来陈老师号召力很强,竟然有1.5%的加V用户转发它了。
最后,我们来看看用户的微博等级:
hist(d$urank, main = "用户等级", xlab = "用户等级", freq = FALSE, ylab = "占比")
 
我们可以看到,用户的等级竟然也是就接近正态分布,证明这个话题的水军比较少呢,陈老师果然是实力派,出来混,是不需要带是水军的。
PS:笔者微博等级才14级,因为懒得关注太多的人,所以卡在了14级,所以12到14级人多是很正常的。
昨晚陈老师不知因何事忽然在微博上骂女神志玲姐姐,引起来网友们的热闹围观,导致前几天风风火火的汪峰的前妻吸毒的事件,顿时落下帷幕,汪峰老师好不容易上了一次头条,就这么被硬生生的扯下来了。
  
当然,这条微博火了之后,陈老师把它删了,只留下这条了,我们接下来的分析,都是基于这条微博的评论的。
好,开篇写好了,我们直接进入主题,作为一名技术宅,如何使用R语言,来分析一下,这个热点事件背后的数据意义。
首先当然是要去抓取数据,这里因为笔者有一个网站,它通过了新浪微博开放平台的审核,因此可以使用微博的API接口进行数据的获取,当然能获取到的数据也不多,评论数据只能获取40页,每页50条左右,也就是2000条。虽然对于陈老师这种上千万粉的人来说,简直是毛毛雨,但是并不影响我们使用它来做一下简单的分析。
library(XML);
library(RCurl);
library(RJSONIO);
page <- 1;
times <- 3;
GoOn = TRUE;
sleepTime <- 1;
while(GoOn) {
  url <- paste(
"https://api.weibo.com/2/comments/show.json?",
"id=4001968182199220&",
"page=", page, "&",
"access_token=这里很私密,就是通过验证的token,我当然不会告诉你啦",
sep = ""
  );
  print(url)
  commentJSONString <- getURL(
url, 
.opts = list(ssl.verifypeer = FALSE)
  );
  
  commentJSON <- fromJSON(commentJSONString);
  
  len <- length(commentJSON$comments)
  print(len)
  if(len==0) {
print("需要休息一下下")
sleepTime <- sleepTime+1;
if(sleepTime>10) {
  GoOn <- FALSE;
}
  } else {
result <- data.frame(
  id=c(NA),
  gender=c(NA),
  followers_count=c(NA),
  friends_count=c(NA),
  pagefriends_count=c(NA),
  statuses_count=c(NA),
  favourites_count=c(NA),
  created_at=c(NA),
  verified=c(NA),
  verified_type=c(NA),
  verified_reason=c(NA),
  verified_trade=c(NA),
  lang=c(NA),
  urank=c(NA),
  screen_name=c(NA),
  name=c(NA),
  location=c(NA),
  description=c(NA),
  text=c(NA)
);
for(i in 1:len) {
  result[i, ] <- c(
commentJSON$comments[[i]]$user$idstr,
commentJSON$comments[[i]]$user$gender,
commentJSON$comments[[i]]$user$followers_count,
commentJSON$comments[[i]]$user$friends_count,
commentJSON$comments[[i]]$user$pagefriends_count,
commentJSON$comments[[i]]$user$statuses_count,
commentJSON$comments[[i]]$user$favourites_count,
commentJSON$comments[[i]]$user$created_at,
commentJSON$comments[[i]]$user$verified,
commentJSON$comments[[i]]$user$verified_type,
commentJSON$comments[[i]]$user$verified_reason,
commentJSON$comments[[i]]$user$verified_trade,
commentJSON$comments[[i]]$user$lang,
commentJSON$comments[[i]]$user$urank,
commentJSON$comments[[i]]$user$screen_name,
commentJSON$comments[[i]]$user$name,
commentJSON$comments[[i]]$user$location,
commentJSON$comments[[i]]$user$description,
commentJSON$comments[[i]]$text
  )
}
write.csv(
  result, row.names=FALSE,
  col.names=FALSE, fileEncoding = "UTF-8",
  file=paste("data/result_", times, "_", page, ".txt", sep = "")
);
page <- page+1;
  }
  Sys.sleep(sleepTime);
}
抓取完成后,得到了用户的一些属性以及评论的内容。
 
好,既然是评论,我们首先当然要来一发词云分析先。
library(tm)
library(Rwordseg)
installDict('明星【官方推荐】.scel', '明星')
contentCorpus <- Corpus(VectorSource(na.omit(d$text)))
contentCorpus <- tm_map(contentCorpus, stripWhitespace)
contentCorpus= tm_map(contentCorpus, content_transformer(segmentCN), returnType='tm')
#tm分词对中文分词Bug解决方案
tokenizer <- function(x){
  unlist(
strsplit(
  x$content,
  '[[:space:]]+'
)
  )
}
tdm <- TermDocumentMatrix(
  contentCorpus,
  control=list(
wordLengths=c(1,Inf),
tokenize=tokenizer
  )
)
#转成向量矩阵
tdm <- as.matrix(tdm)
library(wordcloud)
v <- sort(rowSums(tdm), decreasing = TRUE)
d <- data.frame(word = names(v), freq = v)
d <- d[1:300, ]
wordcloud(
  d$word, 
  d$freq, 
  min.freq=2, 
  random.order=F, 
  colors=rainbow(length(row.names(d)))
)
执行这段代码,我们可以得到以下的词云:
 
可以看到,网友们对于陈老师的这种无端端撕B的行为,一致认为是“你,的,不,是”。陈老师,看到后,也回复了网友的关心:  
好了,大家的态度,陈老师收到了,你们喜欢或者是不喜欢,陈老师还是当年的陈老师,粉丝量还是上两千万的陈老师。
好,接着我们来分析一下网友们的特征。
genderTable <- prop.table(table(d$gender))
 
女网友竟然占比达到65%,好惊讶,是因为志玲姐姐男女通吃,还是陈老师魅力不减当年,还有一堆的女性摄影爱好者粉丝呢……
 
接着我们来看看网友们的地区分布:
locationTable <- prop.table(table(d[, "1"][d[, "1"]!="其他"]))
这个就不出所料了,港东银占据了榜首,不愧是和陈老师发源地比较近。
接着,我们看看用户的加V情况。
verifiedTable <- prop.table(table(d$verified))
 
看来陈老师号召力很强,竟然有1.5%的加V用户转发它了。
最后,我们来看看用户的微博等级:
hist(d$urank, main = "用户等级", xlab = "用户等级", freq = FALSE, ylab = "占比")
 
我们可以看到,用户的等级竟然也是就接近正态分布,证明这个话题的水军比较少呢,陈老师果然是实力派,出来混,是不需要带是水军的。
PS:笔者微博等级才14级,因为懒得关注太多的人,所以卡在了14级,所以12到14级人多是很正常的。

陈老师撕B志玲姐姐的热门微博数据分析相关推荐

  1. 可视化界面编程idea_BAT 的程序员用了这些 IDEA 插件, 志玲姐姐天天鼓励, 工作效率提高 320%...

    一. Alibaba Java Coding Guidelines/Sonar Lint/CheckStyle 主要作用是根据 https://github.com/alibaba/p3c (包含了编 ...

  2. 单身汪慎入,志玲姐姐的这个故事太虐心

    最近的狗粮来得有点猛,林志玲和言承旭时隔15年被拍到同框照,喊了多年的复合就要成真.围观群众带着亲妈般的微笑,恨不得亲自上阵将两人送作堆.为什么林志玲言承旭撒的狗粮大家吃得心甘情愿特别欢?因为这就是一 ...

  3. 谨以此文,献给昨晚为志玲姐姐通宵奋战的广大程序猿兄弟们!

    个人公众号:石杉的架构笔记(ID:shishan100) 目录 (1)为什么要用缓存集群 (2)20万用户同时访问一个热点缓存 (3)基于流式计算的缓存热点自动发现 (4)热点缓存自动加载为JVM本地 ...

  4. 志玲姐姐与程序运行杂谈

    进入公司后,小牧开始进行了一些业务的研发工作.在校期间,他已经能够利用现有的框架进行编码了,比如他擅长的Spring来写java,用flask写个简单的python web等.但是他心里一直有一个疑惑 ...

  5. 女神也抵挡不住!什么样的显示新品让志玲姐姐一见倾心?

    在过去的几天里,相信许多小伙伴的朋友圈都被AWE2018(中国家电及消费电子博览会)刷屏了. 据统计,3月8日至11日在上海召开的AWE2018,共吸引了25万海内外观众前来观展.除了抢先一睹各种炫酷 ...

  6. 陈老师排课软件12A(正式版)

    陈老师排课软件12A版是12.0的加强版,输入人事安排表更加简单方便,适合于小学.初中.普高.职高.大中专院校的教务排课.  一.新课表排课流程 1.将<原始分布>中的各科目与对应的任课教 ...

  7. 陈老师Linux内核内存寻址导学

    <Linux内核分析与应用>第二章 : 内存寻址 从零打造自己的操作系统可能么? 学东西要追根溯源,因为树叶的东西太过繁多,而且不小心会被树叶带走.计算机的鼻祖到底是谁?图灵还是冯诺依曼, ...

  8. 陈老师Linux内核概述导学

    <Linux内核分析与应用>第一章 : 概述 Are you ready? Linux内核像一座金山,又像一片茂密的森林,出发的入口在哪里?仅仅只有C基础和数据结构知识,也想感受Linux ...

  9. 对于牛老师作业陈老师作业补充(老陈、小石头的典型用户、用例图、场景)...

    对于牛老师作业陈老师作业补充(老陈,小石头的典型用户.用例图.场景) 一  :  典型用户 (1)名字:小石头 性别:男 年龄:    8岁 职业:学生 收入:无 知识层次能力:小学二年级 生活/工作 ...

最新文章

  1. 2022-2028年中国塑料板的制造行业市场发展模式及竞争格局预测报告
  2. 史上最可怕最震撼的46亿年世界历史!看完我跪了....
  3. java web 多语言_基于 Selenium WebDriver 实现多语言环境下自动化截图
  4. 演练 base调用父类的方法 c# 1613713591
  5. linux 析构函数地址获取_析构函数实现多态
  6. 无线桥接dhcp服务器关闭吗,光猫桥接要关闭dhcp吗
  7. BeyondCompare3提示许可密钥过期完美解决方法
  8. C语言超级搞笑的代码,冷笑话我们程序员也会讲的啊!
  9. day26 SQL注入神器—— Sqlmap
  10. final 和effectively final区别
  11. 在C++中实现aligned_malloc
  12. html涟漪效果,涟漪效果.html
  13. 优柔但不寡断、柔弱绝不可欺、善良却不可骗、宽容而非懦弱
  14. 批量绘图 | EXCEL绘制基站扇区地图
  15. FedNCF:Federated Neural Collaborative Filtering | 联邦神经协同过滤
  16. HTML5常见面试题及答案(一)
  17. 【转】流媒体技术笔记(视频编码相关)
  18. 复数——概念和代数运算
  19. 校验码 汉明码 CRC码
  20. 不可以色色,色狗柴柴系列表情包,好有趣

热门文章

  1. qcqa是什么职位_qa是什么意思工作职责(qa和qc哪个工资更高)
  2. 同一交换机不同网段的主机间通信
  3. 奇点临近:人类文明延续
  4. 咕咚运动数据存储实践
  5. 【手把手带你Godot游戏开发】FlappyBird:5.1 无尽水管子滚滚来(一)
  6. Web端算法部署+流媒体服务器算法部署+Flask+AI健身+Python-web实时检测效果显示
  7. 普歌-(mac m1亲身教程)iterm配置oh-my-zsh以及iterm配置dracula主题
  8. 操作animate.css的一些小技巧
  9. 计算机课吐槽,让上课更有趣!这位老师的课学生可发弹幕提问吐槽
  10. 电信老总气疯了(爆笑版)!!