【转载】新浪微博数据挖掘方案

 
 
 
摘???? 要: 随着新浪微博用户群体的增长, 新浪微博的数据获取是微博研究首先需要解决的问题。
该文提出了基于新浪微博API 与基于页面解析的新浪微博数据获取方案。
程序逻辑控制API 调用方法与频率, 获取JSON 对象并解析实现高效数据获取。
同时将传统的网络爬虫结合网页解析技术结合API 同时使用, 解决了因API 接口开放不完善, 且因在返回结果数量上限与调用频率方面的限制, 导致不能有效实现新浪微博数据的全面获取的问题。
经过实验测试, 通过2套方案的结合可以实现新浪微博数据高效全面的获取。
 
关键词: 新浪微博; 新浪API; 数据检索; 网页解析
 
 
微博作为Web 2. 0 时代新生网络应用形式, 在最近几年中得到了迅猛的发展。新浪微博中一条用户状态限定280 字符的内容长度, 不但更适合现代社会快速生活节奏的需要, 而且也更方便用户通过移动通信终端上传和分享自己感兴趣的微博信息[ 1 ] 。
 
在美国, 微博网站Tw it ter 自2006 年创建以来[ 2 ] , 用户数量在近几年中突飞猛进, 其中2009 年T w it ter 的用户增长率达到2 565% , 是社交网站Faceboo k 与LinkedIn 增长率总和的10 倍[ 3] 。在中国, 已有14%的互联网用户开始使用微博, 而新浪微博的市场份额占有率接近87%, 是中国微博产业的主导力量[ 4] 。
 
微博的使用人群数量基数大, 状态信息更新频繁、信息传播迅速。并且微博平台媒介用户占有率相对集中, 因此基于微博数据的分析研究成为了十分值得关注的研究方向。HAN Ruix ia[ 5] 介绍了微博平台的特点与基本概念, KAN G Shulo ng [ 6] 针对新浪微博研究了其群体结构与度分布特征。
 
WANG Rui[ 7] 通过数据分析解释了用户好友数量与用户状态受关注程度之间的关系, 但其中并没有介绍数据来源, 而新浪微博API 仍处于测试阶段, 不但内容开放不全面, 而且查询结果返回最大数量与调用频率方面也存在诸多限制, 难以实现全面的数据获取。
 
周立柱等[ 8- 10] 提出了一套 依赖网络爬虫抓取网页内容并根据一定的规则提取页面中的有用信息的思路, 但因为没有涉及 登录模式, 因此也难以运用在 新浪微博的数据获取过程中。因此, 如何实现新浪微博数据的全面高效获取, 成为了研究新微博的首要问题。本文提出利用新浪微博API与传统网页解析方案, 以实现新浪微博数据的高效抓取。
 
 
 
1 ???? 基于API 的数据获取
互联网络数据的获取通常是通过 网络爬虫实现的。在一段网络爬虫程序中, 通过设定入口URL 地址, 程序按照一定的 爬行策略将网页内容以文本文件的形式保存在本地存储系统中, 并提取网页中有效地
址作为下一次爬行的入口URL 地址, 直到爬行完毕或者满足既定爬行条件后程序终止。
相比网络爬虫,新浪微博的开放API 接口可以更加简洁的获取相应的数据, 为程序高效获取微博数据提供了保障。
 
1. 1 ???? OAUTH认证
使用新浪API 首先要解决的是用户认证问题。所谓认证是指用户在不向第三方透露自己的用户名密码的同时, 使第三方软件提供方申请获得该用户资源的授权。OA UT H 认证为用户资源的授权提
供了一个安全的、开放而又简易的标准, 被用于 新浪微博API 的用户验证协议
 
过程如下:
 
1) 用户向新浪微博OAU TH 服务提供商申请应用, 获得应用专属App Key 和App Secret , 分别以HMAC-SHA1 算法对用户发出的请求进行数字签名。
 
2) 通过新浪微博开放平台获取RequestToken。未经服务器授权的Request Token 中包含了对应密钥、加密算法、发起请求的时间戳、随机字符串与版本号信息。
 
3) 向新浪微博服务器Request Token 授权地址发送请求, 服务器同意用户的请求, 并向其颁发未经用户授权的Oauth Token 与对应的Oauth Secret。
 
4) 将上一步得到的Token 与Secret 发给新浪微博用户授权地址申请Request Token 授权。
 
5) 授权后, 用户再向新浪微博Access Toke 地址发起请求, 将上步授权的Request To ken 换取成Access To ken。
 
6) 服务器同意用户请求, 并向其颁发通过新浪微博授权的Access To ken 与对应的密钥。
 
7) 用户将获得的授权的Access Token, 以基于http-header 的OAUTH 形式对请求进行签名,就可以获得软件对于用户身份资源的使用授权。
 
1. 2 ???? 新浪微博API
 
OAUTH 授权解决了程序访问API 的用户身份认证问题。
新浪API 可根据请求内容的不同, 返回特定的XML 或JSON 文件。
XML 作为一种跨平台的强结构性扩展标记语言, 因为所有的用信息都被对应的标签所标记,
 例如: 〈id〉1861021910〈/ id〉〈name〉Hugo〈/ name〉, 所以用户可以便捷地找出相应信息并理解其中内容。
本文的程序由JAVA 语言开发实现, 利用dom4j.jar 可以轻松实现XML文件的读取。
但是因为dom4j 对于XML的结构规范要求十分严格, 而微博中用户状态与信息可能包含一些用户自身偏好的个性化字符格式,这些字符导致程序将无法正确解析整个XML 文档,  因此采取JSON 返回方式具有更高的稳定性。
 
JSON 是一种轻量级的数据交换格式, 文件不具有明显的强结构特征, 如: { ???? id????: ???? 1861021910????,???? name????: ???? Hugo????} 。在复杂的JSON 对象中, 因为它不像XML 文件用规范的标签形式标记有效的内容, 虽然对于人来说较难整理, 但因为JSON 文件结构简单, 因此通过电脑分析JSON 文件具有强大的处理能力。
 
另外JSON 文件中因为不再具有用于标记内容属性的说明性标签, 所以JSON 文件相比XML 文件, 查询相同内容的返回文件更小, 因此更适合作为微博海量数据获取中的文件传输形式。
 
在新浪微博API 接口定义中, 如: 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值