查看原文
其他

【R图秀-2】社交网络数据可视化(一)

傅兴 R语言中文社区 2019-04-22

作者简介Introduction

傅兴:个人公众号:Rapp

往期回顾

【R图秀-1】12306列车数据可视化


为了进一步提高自己数据获取的能力,我把目光放到了互联网上一个重要的数据来源:社交网络(Social Network),比如国外的facebook和twitter,以及国内的微博和微信。由于访问facebook和twitter比较困难,我最终选择新浪微博作为分析的对象。

我首先学习的是新浪微博的API,看看有没有更简单的方法获取数据。遗憾的是,如果想通过API获取目标用户的微博,必须首先获得对方的授权。我获取微博数据只是出于学习的目的,并不是要开发基于微博的应用,所以此路不通,果断放弃。我觉得最靠谱的还是用RSelenium写个程序来操作浏览器,自动帮我刷微博。

数据获取的技术问题解决了,下面就需要考虑抓取哪些人的微博。演艺明星是微博上大家比较关注的对象,就先从他们入手吧!我平时很少关注娱乐圈,认识的明星也不多,但是挺喜欢和家人一起看《奔跑吧兄弟》(跑男),所以今天就来分析一下跑男中的明星(邓超,李晨和Angelababy)以及他们的另一半(孙俪,范冰冰和黄晓明)的微博数据。


爬虫代码的主要部分是2个函数:登录函数(weibo_login)和抓取函数(fetch_post)


需要注意的是,目前的抓取函数还不支持人名搜索,所以在抓取某人的微博之前,首先要手动看一下他微博URL上的用户名是什么(用户名的具体位置在weibo.com和?中间),然后用该用户名作为参数调用抓取函数,比如下面的代码:

 在展示微博数据之前,我们必须先想清楚自己想看什么?想回答什么样的问题,比如:

1. 我很想知道明星微博的高频词汇有哪些?夫妻之间会不会有“共同语言”?
2. 我还想了解明星的朋友圈有哪些人,夫妻之间的朋友有多大的交集?

我们可以用词云(word cloud)来展示各个明星的微博中最常出现的词汇(这里只考虑名词,其他词性的词汇都已过滤掉):





我们可以看到,“电影”是他们微博中出现最频繁的词汇,说明他们利用微博在向粉丝们宣传自己的电影,其次就是和家人朋友相关的词汇。由于时间有限,我没有继续深挖下去。

生成词云的代码如下:


接下来要回答的是第二个问题,如何从明星们的微博中挖掘出他们的社交网络?我首先想到的是微博中@某人的功能,@后面的微博账号和明星之间应该存在某种关联,如果@某人的次数很多,说明两者之间的关系密切(好友或家人)。接下来我们就来看看明星夫妻之间的“朋友圈”是怎样的。


1. 黄晓明和Angelababy:



2. 李晨和范冰冰:


3. 邓超和孙俪(邓超绝对是模范丈夫,@老婆的次数这么多!)

统计@次数的代码如下,为了能看清网络中的节点,我过滤掉了一些低频的@:


下面是网络可视化的代码:

如果你也是某位明星的粉丝,就用R来分析一下他们的微博吧!今天的【社交网络数据可视化】就到这里,欢迎继续关注!






 往期精彩内容整理合集 

2017年R语言发展报告(国内)

R语言中文社区历史文章整理(作者篇)

R语言中文社区历史文章整理(类型篇)


公众号后台回复关键字即可学习

回复 R                  R语言快速入门及数据挖掘 
回复 Kaggle案例  Kaggle十大案例精讲(连载中)
回复 文本挖掘      手把手教你做文本挖掘
回复 可视化          R语言可视化在商务场景中的应用 
回复 大数据         大数据系列免费视频教程 
回复 量化投资      张丹教你如何用R语言量化投资 
回复 用户画像      京东大数据,揭秘用户画像
回复 数据挖掘     常用数据挖掘算法原理解释与应用
回复 机器学习     人工智能系列之机器学习与实践
回复 爬虫            R语言爬虫实战案例分享

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存