软件2015年第36卷第2期 S0FT rARE 国际IT传媒品牌 用 社交媒体数据的获取分析 王铁刚 (北京邮电大学计算机学院,北京 100876) 摘要:本文主要介绍了对于社交网络中媒体数据的获取分析。首先介绍了一般的获取策略,即获取数据的一般 过程。然后根据当前情况,主要是对两种方式进行分别分析。并在两种方式上分别提出了提高效率的一般方法。最后 对这两种获取方式进行性能比较,并做出总结。 关键词:媒体数据;方式;分析;效率 中图分类号:TP393 文献标识码:A DOI:10.3969/j.issn.1003—6970.2015.02.019 本文著录格式:王铁刚.社交媒体数据的获取分析Ⅱ].软件,2015,36(2):86—91 Acquisition and Analysis of Social Media Data WANGTie—gang (CollegeofComputerScience,Beiing fUniversityofPos ̄and ,Beiing100876,Chifna) [Abstraetl:This paper describes the acquisition of social network for analyzing media data.First introduced the general acquisition strategy,thatthe generalprocessofdataacquisition.Thenbasedonthe current situation,mainlyfor separately analyzed in wo ways.And tn ihe ttwo ways are proposed to improve he genertal eficifency ofthe method. Finally,these wo ways to obtaitn aperformance comparison and conclude. [Key words]:Media atda;Way;Analysis;Eficifency 0 引言 随着互联网的快速发展,世界范围内的互联网用户也在急剧膨胀,各种言论充斥其中,人们利用手机、 电脑可以随时随地通过论坛、BBS、SNS等更新自己的动态、发表言论。 微博作为Web2.0时代络的应用形式,它集成了手机短信、博客和社交网站的优点,使信息更加 实时、内容更加简洁、社区更加活跃【lj。在最近几年,因为其内容短小、实时性、便捷行、原创性、互动性 和大众的特点已经被人们广泛接受,用户可以随时、随地利用移动终端发布文字、图像、视频等,草根与 名流共同创造、传播和分享着信息,进行着没有界限的对话。 随着微博的普及,微博的传播速度也越来越快,其导向的作用也越来越突出。同时,信息量在传 播中变得海量 J。通过对微博信息进行挖掘和分析,关注其中的社会热点话题,可探寻其规律并预测动向, 分析热点事件的趋势,特别是微博信息传播的实时性可以应用于突发性社会事件和自然事件的监测和 预警【3】。“工欲善其事必先利其器”,要想对微博数据进行研究,获得微博平台上大量的数据是要做的第一步。 本文旨在对微博采集的方式进行分析,为实现对微博数据的高效抓取提供依据,并对其性能进行测试,为 建立统一的数据采集平台提供方便,以便后续挖掘。 微博采集主要有两种方式,分别是开放API与网页解析。基于新浪API的数据抓取策略性能高,但是 因为服务器不能获取完整的数据集;基于网页解析的方案可以获得最大的数据文本,但是效率却比API低。 系统实现依赖的具体技术有:媒体的爬取策略、Web2.0下OAuth认证、多线程技术、ht勺p协议下载技 术、xML数据集成、分布式技术。 1社交媒体爬虫介绍 大多数的社会媒体,例如Facebook、Twitter、新浪微博等均提供了数据访问的API接口,其获取方式 作者简介:王铁 ̄JJI(1988-),男,硕士研究生,北京邮电大学可信分布式计算与服务教育部重点实验室,主要从事信息安全方面研究 王铁刚:社交媒体数据的获取分析 类似。先简单介绍主流的社会媒体的网络爬虫原理。 主流的社交网络均在一定程度上开放了数据平台,提供了数据访问的API接口。调用社会媒体的API 接口函数,获取人物的背景信息、社交信息、发布信息、交互信息。社交网络的信息主要通过HTTP的方 式进行传递(图1),获取方式是HTTP请求。社会网络在开放平台提供的基本API接口基础之上,又封装了 不同语言的SDK,主要有Java、PHP、Javascript、Flash等,可根据数据的不同而选择不同的开发语言,尽 量减少请求次数和数据传输量,提高系统的分析效率L4J。社会网络的信息获取主要有以下几个重要部分: ①权限验证:社会媒体的信息获取必须在权限允许之内,请求的数据不涉及隐私,是可公开的。 ②注意事项:使用者的请求在一定的时间内是有次数的,所以要合理的使用请求。 二=> 一 二/ = —+ 数据存储 \ \ / 图l 社会网络的数据获取过程 依据上述原理,网络穿透对抗技术相关的特定人 群所组成的社会网络,先简单介绍社会网络的网络爬 虫算法,如图2。 选择一组人物作为初始的种子节点,利用雪球采 样策略,顺着人物的关注链向外爬行,获取社会网络 上每个人物节点的背景信息、社交信息,探测出整体 网络。主要思想如下: 1.选择一组社会媒体的人物{ID1,ID2,… ) 作为种子节点,加入待爬行节点队列Q。 2.如果Q=NuLL或超过阈值(预设的爬行时间或 扩展层数)则退出;否则,从Q中取出一个用户ID 3.利用社会媒体的数据访问API访问函数,抓 取该用户节点IDk的个人信息,将人物的背景信息(位 置信息、标签、个人描述)、社交信息(关注信息、粉 丝信息),分另U存入社会网络数据库。 4.扩展该节点 ,将其邻居节点(,D 的关注列 表中全部用户ID)加入Q,转到2。 利用元搜索技术,探测初始的网络穿透对抗技术 相关的特定人群所组成的社会网络。在探测出的社会 网络上,获取了一组初始的特定人群节点。在此基础 上,利用关系分析技术,对上述的初始的特定人群节 图2社会网络爬虫的工作原理 点进行扩展,生成特定人群节点集合,组成待检测的 人物频道列表。然后利用面向人物频道列表的网络爬虫,侦听每个人物频道发布、转发、评论的信息流(微 博、博客、帖子等)。面向人物频道列表的网络爬虫的工作原理比较简单。即:对于待检测的人物频道列表, 定时爬行每个人物频道发布、转发、评论的信息流。 2基于API的数据获取 2.1 Oauth认证 以新浪为例,使用API首先要解决的是用户认证问题。所谓认证是指用户在不向第三方(比如我们的采 87 (<软件》杂志欢迎推荐投稿:eosoft@163.COlll 王铁刚:社交媒体数据的获取分析 E.Request Token授权后,使用者将向Access Token URL发起请求,将上步授权的Request Token换取 成Access Token。请求的参数见下图,这个比第一步A多了一个参数就是Request Token。 F.OAUTH服务提供商同意使用者的请求,并向其颁发Access Token与对应的密钥,并返回给使用者。 G.使用者以后就可以使用上步返回的Access Token访问用户授权的资源。 这里要说明的是: (1)新浪官方虽然要求第三方应用访问用户的某些资源(如用户的好友列表)时要有该用户的亲自认证, 但是还有一些(如用户的基本信息)资源是不需要该用户亲自认证的(也就是说,对于这类资源来说,只要有 一个用户通过了验证,就可以利用这个用户AccessToken访问包括这个用户在内的所有用户的资源)。因此, 我们注册了一些马甲账号,自己通过认证,利用API采集此类信息。 (2)认证过程中,账号密码的输入是在浏览器中进行的,AccessToken的返回也是在浏览器的URL中, 这些都需要手动干涉。如何消除手动干涉的动作,将在Htqp协议下载技术中进行说明。 2.2多线程技术 新浪微博的数据量是十分庞大的,单线程会严重降低采集效率;无论是API还是Web爬虫都不可能做 到无的采集(每个IP地址只有1000次调用API的权限,Web爬虫采集过于频繁也会被封号或者风IP)。 采用单线程,一旦出现封锁的状况,程序就会崩溃,不得不重新配置启动;最后,我们分别用API和页面 解析的方式获取不同的数据,当然也希望这两项工作同时进行。因此多线程是最理想的方式。图5为用户 细心采集模块流程图。 图5利用API进行用户信息采集 3利用页面解析技术采集微博信息 3.1 http协议下载技术 前面提到的在不启动浏览器的前提下进行认证、模拟登陆(浏览器浏览微博时,如果不登陆的话就只能 浏览极少的一部分页面,页面下载也是如此,我们请求页面是需要在附加登录信息,如cookie)和微博的采 集都依赖http协议下载技术。 89 软件》杂志欢迎推荐投稿:cosoft@163.corn 王铁刚:社交媒体数据的获取分析 Python的urllib,urllib2等几个模块提供了实现request请求的发送和相应的接收,我们只需要构造自 己的post数据和header(post和header内容通过抓包分析获得)。微博采集请求页面时需要携带cookie,所以 我们还必须设置cookie处理器来保证cookie,这通过cookielib模块实现。 利用http协议下载技术下载微博信息流程与利用API进行用户基本信息采集类似。 3.2 XML数据集成 因为我们采用不同的方式获取用户基本信息和微博列表、好友列表等,因此返回的数据格式是不一致 的;我们若要开发一个针对各个微博的采集系统,而每个微博平台的数据结构也存在差异。XML作为轻量 级的数据储存文件,具有:内容和结构完全分离、互操作性强、规范统一、支持多种编码、可扩展性等优 点。为了方便后续的数据分析,我们采用xml定义数据进行集成存储。见图6。 图6数据集成格式 3.3分布式技术 微博的数据量十分庞大,采用一台爬 虫机会耗费大量时间,而且容易引发封 号、封IP;多个爬虫程序又可能引发数据 大量冗余,因此我们采用分布式的爬虫框 架【o J,如图7。 整个爬虫程序分为三个部分。 Scheduler:一个简单的调度器,主要 DB 作用分配UID给每个wooer,并响应 Monitor命令。 图7分布式架构示意图 Monitor:监控程序,收集各个wooer 程序的心跳,并有一个web接口。用户可以在Monitor进行设置。 Crawler:爬虫worker程序,每个worker从Scheduler拿到UID,就去抓取这个微博用户数据。 软件》杂志欢迎推荐投稿:cosoft@163.COlll 90