中国社交网络的信息爬取与大数据挖掘

幸福感最高的中国高校有哪些
最有运动氛围的中国高校有哪些?

<

挖掘与分析最受欢迎的校园社交网络人人网 Renren.com


开始
了解

互联网正逐渐成为人们生活中的一部分,也越来越能够反映人们的想法、生活状态,而社交网络尤其具有代表性。在现代社会,查看社交网络主页甚至成为了人们了解一个人首要选择的途径。对社交网络的海量信息进行数据挖掘与分析也是当下一个必然的趋势。

1. 通过网络爬虫,获取人人网新鲜事/状态关键字搜索结果,将海量信息存入数据库
2. 通过对状态关键字搜索结果的数据分析,得到各关键词提到频率的学校排名
3. 通过对社交网络中学生发布的新鲜事或微博的词频统计,深入挖掘中国各高校学生生活状态,如学业压力、娱乐生活等
4. 通过社交网络用户档案分析,得到各高校学生的基本构成,比如男女比例,各地域比例,毕业去向分析,比如进入各研究所或工作单位比例

Renren (人人) 是目前规模最大的校园社交网络 它是学生主要的校园信息发布与获取的渠道。在移动互联的时代,每个人不仅是浏览者更是互联网内容的贡献者,每天上亿的信息与内容在互联网上传播与发布。


Responsive image

研究内容

数据获取

数据源:人人或者微博上发布的新鲜事
技术:网络爬虫或网站API

数据存储

数据库:MySQL
技术:MySQL数据库设计与管理

数据挖掘

自然语言处理(分词)、 词频统计、 用户档案分析

数据可视化

通过网页的方式将分析结果简明的呈现出来,采用饼状图、柱状图等

现有数据分析结果

校园情绪排行

The happiest university

keyword happy mentioned most frequently


人人网提供强大的搜索功能,可以搜索用户、状态、分享等内容。利用搜索功能,按关键字搜索用户发布的状态,再逐条访问发布者的用户档案得到其学校等开放个人信息,将状态与发布者的学校进行匹配,存储入数据库中


Related Status

校园生活方式排行


More Lifestyle Keywords

健身 自习 熬夜 聚会

Related Status

技术细节

人人网模拟登陆方法的实现

由于人人网许多页面(比如用户新鲜事与用户档案等)都需要登录后才能查看,所以需要使用JAVA程序发送http请求模拟登陆人人网获取cookie后再爬取所需信息。

为了分析登陆人人网所需发送的Http请求具体消息头,使用网络监视器软件监视Http请求。
分析出登陆人人网的http请求的方法是POST方法,请求的消息正文的表单域与对应参数也都可以看到。

程序主要类与方法介绍

Renren Analyze package        爬取与分析人人网数据

CrawlSearchedStatus.java        爬取状态关键字搜索出来的用户的资料并访问其个人主页获取就读信息与居住地信息

RenrenSpider.java        人人httpclient爬虫:模拟登陆,爬取页面的源代码数据

dbhelper.java        操作MySQL数据库的相关处理,连接查插改删等方法

RenrenStats.java        数据分析与挖掘等统计操作-Statistic methods to analyze data

SwingGUI package        为程序添加GUI交互界面

爬虫初始化

爬虫变量设置

  /**txt file path of Renren account username and password to log-in*/
  String accountsFilePath = "D:/Renren/account.txt";
  /**the start page number of crawling target */
  int offset = 9420; 
  /**keyword of timeline statuses to crawl in English*/
  String tableName = "party";
  /**keyword of timeline statuses to crawl in Chinese*/
  String keyword = "聚会"; 
  /**the start proxy host to use*/
  int proxyIndex=9; 
  /**if need proxy host to crawl at beginning*/
  boolean needProxy = false;
  /**pause time (in seconds) after every crawl*/
  double sleepSec = 0.5;
      

反爬应对机制

由于爬虫频繁请求网站资源,各个网站都会有一些对付爬虫的反爬机制,所以要使自己的爬虫突破封锁,保证长时间顺畅运行则必须要有完善的反爬应对机制。

在两次爬取间加入一定时间间隔       

过于频繁的Http请求可能会遭到封锁IP地址。因此要保证两次爬取间的时间间隔不小于一定值,不然可能会被识别出来为爬虫。使用Thread.sleep()在程序间加入时间间隔。

更换IP地址与登陆账号访问资源       

在一定次数的爬取后,使用代理服务器更换IP地址以及更换账号登陆人人网继续爬取资源,降低被检测出来的风险。

伪装成浏览器       

为了使爬虫不被识别出来,首先要做的就是模仿浏览器的浏览,不被检测出来是JAVA程序发出的Http请求。因此,设置Http请求的参数、消息头,使Http请求看起来更像是浏览器发出的。比如,设置Http POST方法的请求头user agent参数为火狐浏览器。