《基于JAVA的社交网络的信息采集系统的研究与设计.docx》由会员分享,可在线阅读,更多相关《基于JAVA的社交网络的信息采集系统的研究与设计.docx(28页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、本科毕业设计(论文)基于JAVA的社交网络的信息采集系统的研究与设计学院(系): 专业班级: 学生姓名: 指导教师: 学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包括任何其他个人或集体已经发表或撰写的成果作品。本人完全意识到本声明的法律后果由本人承担。作者签名: 年月日学位论文版权使用授权书本学位论文作者完全了解学校有关保障、使用学位论文的规定,同意学校保留并向有关学位论文管理部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权省级优秀学士论文评选机构将本学位论文的全部或部分内容编入有关数
2、据进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。本学位论文属于 1、保密囗,在 年解密后适用本授权书 2、不保密囗 。(请在以上相应方框内打“”)作者签名: 年 月 日导师签名: 年 月 日摘 要本文借助开发平台Eclipse针对社交网络新浪微博开发了一个信息采集器,能够实现对新浪微博的信息采集,所得结果对于新浪微博的开发具有重要的指导意义。论文主要研究了社交网络的信息采集原理,并以新浪微博为研究对象,借助JAVA编程软件实现对微博信息的采集。本论文的主要工作有以下几个方面:首先是利用微博系统的JAVA SDK获取数据,该技术通过调用微博平台提供API来获取数据。这部分工作
3、需要利用微博系统的JAVA SDK获取数据的工作流程,调用API需要通过用户身份的鉴权。目前使用OAuth鉴权,其优点是数据准确快捷,很少因微博平台的变化而变化,但缺点是接口提供商限制的因素多且不稳定。其次通过JAVA编程设计一个良好的界面,调用API接口实现对授权用户的信息采集,通过输入一个关键词,在授权用户好友微博圈里进行匹配,将出现该关键词的好友微博返回到txt文件中进行保存,同时将历史采集记录保存下来,实现对授权用户好友信息的主题采集。研究结果表明,通过调用API接口获取用户微博数据这种方式实时有效,能够满足我们对新浪微博授权用户微博实时信息的主题采集。本文的特色在于通过调用API接口
4、实现对新浪微博信息的主题采集快速便捷,而且设计了一套完善的显示与保存方案,能够对新浪微博的后续研究提供数据。关键词:社交网络,新浪微博,API,信息采集AbstractThis paper is mainly to develop an information collector, which can collect the information of Sina micro-blogging by the use of Eclipse. The results of this paper have important guiding significance for the further
5、study of Sina micro-blogging.In this paper, we mainly introduce the principle of social networks. On the basis of this, we take Sina micro-blogging as our research object, using JAVA programming software for the information collection of it. The main work of this paper has the following aspects: Fir
6、st, we introduce the principle of JAVA SDK, which is provided by the Sina micro-blogging system to obtain data. The method to get the data by SDK is to use the API interfaces of Sina micro-blogging. This part of the work requires the use of JAVA SDK to get the access to the API. Only when we have th
7、e access to the API of Sina micro-blogging, we can get through the identity authentication of Sina microblogging. Currently Sina micro-blogging use the OAuth 2.0 protocol for the identity authentication. The advantage of OAuth2.0 is fast and accurate, which rarely changes due to changes of the micro
8、-blogging platform. But the drawback is that there are too many limiting factors for API. Then we use the JAVA programming software Eclipse to design a friendly interface to realize the information collection of Sina micro-blogging. By entering a keyword in the input area, the system we designed can
9、 match the keyword with Sina micro-blogging.Once the keyword appears in the micro-blogging, the system will collect the information of the Sina micro-blogging .By the same time, the system will save the information to the data file and save the recorded history of the collection, to achieve the auth
10、orized subject collection for the Sina micro-blogging.The research results show that by using the API interface to get data this way, we can realize the real-time information collection of Sina micro-blogging.The characteristic of this paper is to use the API to realize the subject collection of Sin
11、a micro-blogging, quick and effective, which can save a lot of time. In addition to this, I design a set of friendly interface, which can display and save the information effectively and provide data for the further study of Sina micro-blogging .Key Words:social network,Sina micro-blogging,API,infor
12、mation collectionII目 录第1章 绪论11.1 研究背景和意义11.2 国内外研究现状21.3 论文主要工作31.4 论文结构安排4第2章 系统相关技术52.1 JAVA技术简介52.2 新浪微博开发平台52.2.1 微博JAVA SDK52.2.2 微博应用的创建62.2.3 OAuth2.0授权认证72.2.4 微博内容的获取92.3 本章小结9第3章 信息采集系统设计与实现103.1 系统总体设计103.2 系统各模块实现113.2.1 授权认证的实现113.2.2 启动模块的实现133.2.3 微博内容的获取143.3 系统效果显示153.3.1 主页面效果显示153
13、.3.2 采集信息效果显示163.4 本章小结19第4章 总结与展望204.1 总结204.2 前景与展望20参考文献21致 谢22第1章 绪论1.1 研究背景和意义随着网络技术的发展,互联网跨入到web2.01时代。在web2.0时代中,整个互联网平台不停扩展着人们之间的社会关系,从而促使多种社交网络平台的出现,产生了多种新颖的交互模式和途径。社交网络是一种在线交互媒体,该媒体最显著特点为具有强大的信息传播能力与影响力。近些年来,社交网络迅速发展。在国外,以 FaceBook,Twitter为代表,在国内,以新浪微博,腾讯微博,QQ空间,百度贴吧以及人人网为代表。这些社交网络平台向人们提供社
14、会网络服务,使得用户能够方便快捷地通过互联网自由分享自己的个人信息,获取和传播其他用户的信息。如此一来,整个社交人群的交互信息和背景信息等形成一张社会网。国内社交媒体中,近年来以微博的发展最为迅速,用户群规模增长最快。根据相关统计,国内2014年1月份社会化媒体排行榜如表1.1所示。由1.1可以看出,有三大微博平台跻身社会化媒体分享榜前十,微博平台已经成为社会化媒体中最受欢迎的平台,其中尤以新浪微博最为火热。在2013年7月中国互联网络发展状况统计报告中提到:“截至 2013年6月底,我国微博网民规模为3.31亿,较2012年底增长了2216万,增长7.2%。网民中微博使用率达到了56.0%,
15、较上年底增加了1.3个百分点。2014年4月17日,新浪微博正式登陆纳斯达克,成为全球范围内首家上市的中文社交媒体。表1.1 2014年社会化媒体的排行榜排名媒体名称分享百分比排名媒体名称分享百分比1新浪微博17.93%6开心网5.09%2QQ空间16.49%7搜狐微博4.86%3微信16.17%8飞信4.14%4腾讯微博6.40%9百度贴吧3.86%5人人网6.22%10QQ好友3.16%随着微博的爆炸式发展,它逐步成为国内外学者共同关注的焦点。微博是一种允许用户用即时更新的简短文本(一般信息发布字数在140个以内)并可以公开发布的博客形式。微博包含海量的数据信息,它允许任何人阅读或者只能由
16、用户选择的群组阅读。目前微博已经成为网民获取信息的重要途径之一,微博从满足人们弱关系的社交需求上逐渐演变成为大众化的舆论平台,越来越多机构及公众人物都通过微博来发布或传播信息。微博的三大特点:(1) 便捷性。微博网站即时通讯功能非常强大,通过QQ和MSN直接书写,在有网络的地方,只要有手机就可及时发布微博,更新自己的实时信息。类例于一些大的突发事件或引起全球关注的大事,如果有微博在场,利用各种手段在微博客户端上发表出来,其实时性、现场感以及快捷性,甚至超过所有媒体。(2) 背对脸。与博客上面对面的表演不同,微博上是背对脸的交流,就好比你在电脑前打游戏,路过的人从你背后看着你怎么玩,而你并不需要
17、主动和背后的人交流。可以一点对多点,也可以点对点。当你follow一个自己感兴趣的人时,两三天就会上瘾。移动终端提供的便利性和多媒体化,使得微博用户体验的粘性越来越强。(3) 原创性。在微博上,140字的限制将平民和莎士比亚拉到了同一水平线上,这一点导致大量原创内容爆发性地被生产出来。微博集成了手机短信、博客与社交网站的优点,将消费者从原来单纯的信息接收者变成了接收和发布信息的完全参与者,从而让社会走进了全民记者时代。各行业、各领域的科研人员在社交网络现有基础上,开展了大量与微博相关的研究和实践工作。微博的流行给原有的企业沟通方式造成了前所未有的冲击,如何有效地利用微博已成为当前企业界和社会化
18、营销理论的重要问题。现阶段,随着微博网络影响力的快速扩大,政府部门、学校、知名企业、社会公众人物均开通了微博。随着公众的参与,微博成为了一个强大的虚拟社会,微博已经是网络信息的重要来源,如何用于快速有效地采集微博信息已经成为一个具有重要应用价值的研究。在各大微博平台飞速发展的同时,微博平台也为开发者和研究者提供了良好的数据获取方式。Twitter、新浪微博、腾讯微博等微博平台都提供了open API。如今各大微博平台如此风靡,在海量用户数据,关系数据及内容数据的环境下,各大微博平台通过open API2的方式使得大量用户可以在其平台上开发出各式各样的应用,提高平台的服务质量,同时也为社交网络研
19、究者提供了以网站服务方式对外的数据接口,这其中就包括大量数据下载的API,为针对微博平台的相关研究工作提供了优良的数据通道。目前,尚没有一个系统直接提供了微博数据并进行相关分析。因此需要开展对微博的信息采集研究。本文的主要工作就是要开发一套基于JAVA的新浪微博信息自动釆集程序,为社交网络舆情研究、网民行为分析等系统提供满足个性化服务的丰富的信息资源。因此,研究与设计新浪微博信息采集系统不仅具有较强的现实意义,也具有较强的理论研究意义。1.2 国内外研究现状目前国内外对社交网络的信息采集技术做了很多研究,也编写了很多开源的采集框架。国外学者主要是针对网络爬虫技术做出了一系列研究。Fish3系统
20、是最早的主题网络蜘蛛模型。它是一个基于客户端的实时信息检索系统,它假设相关页面在逻辑上彼此接近,采用深度优先算法搜索相关页面,并用一组关键词和短语判断页面的相关性。Hersovici4对Fish系统进行了改进,它从一个特定点开始并跟踪相关文本的链接,使用向量空间模型来计算页面的相似度,根据链接周围文本价值和链接的“继承价值决定优先级及爬行的深度。Cho5提出了通过先爬行更重要的网页使爬行更有效。他讨论了几种评价链接重要性的方式,提出了基于“驱动查询”(DrivingQuery)相似度、页面入度(Backlinks)、PageRank和页面位置的链接排序方法,并得出结论:PageRank指导的爬
21、虫表现最佳。此后,PageRank算法和Kleinberg提出的HlTS算法作为两种主要的链接分析算法很快被众多研究者用于指导主题爬虫预测URL的重要性,目前很多用于URL评价的Web分析算法都可以在不同程度上视为这两种算法的变体。印度理工学院的学者Chakrabarti等6,利用已分类的实例集训练分类器,来衡量页面与主题的相似度,并用于指导搜索顺序。Diligenti7从相关页面出发,构建“语境图”和分类器,并根据语境图的层次预测距离相关页面的远近,较近的页面较早访问。Estert8采用“隧道”技术指导搜索,当搜索精度低于某一预先定义的阈值时,则将主题范围增大,搜索未来回报较大的链接。Agg
22、arwal9将页面内容、页面的URL结构抽象为页面特征,并利用它们构建Web的概率模型,用于预测链接的价值。目前在国内也有很多学者对社交网络的信息采集技术进行研究,很多都是以新浪微博为例。吴斌杰等10提出了基于API的信息采集方法,然后设计了一个信息采集系统,能够对新浪微博的相关信息进行采集。康捷11等人提出了基于新浪微博API与基于页面解析的新浪微博数据获取方案。程序逻辑控制API调用方法与频率,获取JSON对象并解析实现高效数据获取。同时将传统的网络爬虫结合网页解析技术结合API同时使用,解决了因API接口开放不完善,且因在返回结果数量上限与调用频率方面的限制,导致不能有效实现新浪微博数据
23、的全面获取的问题。郭颖为12设计并实现了基于多生产者多消费者模型的网页信息采集与存储的网络爬行器,采用多线程的方式分别对每类结构化的数据进行存储。为了进一步提高爬行器的效率,文中利用新浪微博API接口对微博用户的社交信息进行辅助采集。冯典13设计并实现了一种可根据数据种类的不同,创建多种爬虫的数据采集系统,一方面使用多线程技术大幅提高爬虫的效率,另一方面,创造了多AppKey复用机制,突破了新浪对API调用频率的限制,保证了爬虫可以连续不间断的工作。1.3 论文主要工作本文主要工作是研究微博数据的抓取方式,并实现对微博授权用户的微博信息的主题采集,主要工作有: (1) 微博API研究利用微博系
24、统的SDK获取数据,该技术通过调用微博平台提供的API来获取数据。这部分工作需要利用微博系统的SDK获取数据的工作流程,调用API需要通过用户身份的鉴权,目前使用OAuth鉴权。其优点是数据准确快捷,很少因微博平台的变化而变化,但缺点是接口提供商限制的因素多且不稳定。(2) 系统设计与实现设计一个良好的界面,实现对微博授权用户信息的主题采集,并能够对采集信息进行保存以便于后续研究。1.4 论文结构安排本论文主要开发了基于windows平台的社交网络的采集系统,使用新浪微博提供API结合第三方SDK,对新浪微博上的用户数据进行采集。本文分为四章进行阐述。第一章绪论。介绍论文的研究背景及意义,当前
25、课题的研究现状,论文的主要工作以及结构安排。第二章系统相关技术概述。对论文所用的相关技术进行介绍,重点介绍了JAVA的GUI图形界面和多线程以及新浪微博开放平台,详细介绍新浪微博授权过程及API调用流程。第三章信息采集系统设计与实现。重点阐述新浪微博的信息采集方法。首先对系统的功能及结构进行分析,然后详细介绍系统总体路线设计。最后对所设计的平台进行验证,分析其效果。第四章总结与展望。此章对整篇文章的工作进行了总结,并提出了下一步的工作方向。9第2章 系统相关技术2.1 JAVA技术简介JAVA由Sun Microsystems公司于1995年5月推出的一门面向对象的程序设计语言,用它编写的应用
26、程序具有跨平台的特征。JAVA框架下包含三大平台:JAVASE、JAVAEE和 JAVAME。JAVASE是JAVA平台标准版的简称,用于开发服务器、桌面和嵌入式设备中的JAVA应用程序;JAVAEE一种用来简化企业解决方案的开发、部署和管理相关的复杂问题的体系结构,JAVAEE的基础是JAVASE,JAVAME是一个用来为移动平台提供的基于JAVA环境开发的技术规范的集合。JAVA技术凭借着它的高效性、安全性、通用性和平台移植性,目前被广泛应用于个人PC、移动电话、科学超级计算机、游戏控制台和互联网等领域。在全球云计算和移动互联网的产业环境下,JAVA更具备了显著优势和广阔前景。本文中主要采
27、用JAVASE进行系统设计。无论是采用JAVA SE、JAVA EE还是JAVA ME开发,图形用户界面都是不能逃避的问题。现在的用户总希望开发的软件功能丰富强大而又操作简单,这就需要开发者注重界面的友好性,GUI就成了JAVA开发者不可或缺的重要课题。JAVA使用AWT和Swing类库来完成图形用户界面的编程,其中AWT的全称是抽象窗口工具集(Abstract Window Toolkit),它是Sun公司最早提供的GUI库,这个GUI库提供了一些基本功能,但这个GUI库的功能比较有限,所以后来又提供了Swing库15。JAVA开发者通过使用AWT和Swing提供的组件库,程序只需创建所需的
28、图形组件,并用合适的布局管理器来组织这些组件按照特定的方式排列,就可以开发出非常完美的用户界面。如果想要实现用户与界面之间的交互,开发者还应为程序添加事件监听,让事件处理来完成响应用户动作。本论文作品主要用到了Swing库中的JButton、JLable、JTextField、JTable、JScrollPanel、JFrame、JPanel等组件,用到了AWT库中的BorderLayout、FlowLayout等布局管理器组件。2.2 新浪微博开发平台目前,新浪微博提供了相应的API供本系统使用,通过调用这些API,本系统可以获取如微博内容、用户关系、用户信息、用户标签等信息。要使用这些AP
29、I,需要先创建一个自己的应用,然后进行认证,认证完成后即可使用API获取新浪微博的数据了。2.2.1 微博JAVA SDK微博JAVA SDK是新浪为JAVA开发者提供的专门用于访问新浪微博的接口,通过微博JAVA SDK,第三方微博应用可以很方便的访问微博提供的API接口,获取到需要的信息。微博JAVA SDK的整体架构包含如下几个:src:weibo4j封装了大部分接口,包括授权,timeline,用户等常见接口weibo4j.http包含了https请求的封装weibo4j.model包含了user,status等实体类weibo4j.org.json 完成json解析的各种方法weib
30、o4j.util 包含了请求api接口时候所需要的工具类examples:里面包含了封装接口的各个测试demo2.2.2 微博应用的创建新浪的微博开放平台2(Weibo Open Platform)是新浪微博为开发者提供的一个开放平台,在此平台上,你只需要建立自己的应用,就可以使用新浪微博所提供的所有功能。而用户只需要对你的应用进行授权,即可使用你的应用,而你的应用也可以访问用户的信息了。应用创建的流程图如下图所示:图2.1 新浪微博创建和开发应用的流程图如上图所示,首先使用自己的新浪微博账号进行登陆,如果没有的话,就要先注册,然后再登陆到新浪的微博开放平台。成功登陆以后,首先要填写个人的基本
31、信息,因为如果此应用上线运营,需要保证此应用的合法性。填写了个人信息后,就可以获得开发者的身份,这时就可以创建应用了。创建应用时,除了填写应用的基本信息,包括名称、用途、应用网址以外,最重要的是应用的类型。新浪微博的开放平台提供了三种类型的应用,这三种应用的特征如下表所示:表2.1 不同种类的应用及其特征网站接入类应用网站接入类应用是新浪微博针对第三方网站提供的社会化网站接入网络接入方案。接入类应用可以让开发者创建的网站支持用户使用微博的账号登录,这样可以使用户更方便的浏览网站上的内容,以更好的推广网站。站内应用由于新浪的用户量巨大,接触到站内应用的人数量很大,便于大面积的提高应用的热度。站内
32、应用可以优先使用新浪微博的通知、邀请接口,另外站内应用比其他种类的应用具有更高的优先权,在新浪官方的应用广场上将获得更多的推荐机会,而且在同等的条件下,测拭期间的站内应用将比其他应用得到优先推荐。移动应用移动应用类可以满足用户使用手机、平板电脑平台分享信息的需求。从上表可以看出,为了获取新浪微博中的内容,本系统采用了站内应用的方式创建应用,这是为了获得更高的权限,以获得更高的API调用频率。另外,为了能以更高的频率调用API,也希望提供给更多人使用,可以使用更多的账号来访问API,这也是本系统创建一个站内应用的原因之一。创建完站内应用后,应用将会获得一个App Key和一个Secret Key
33、,这两个Key是以后会用到的。其中App Key是应用在开放平台中的身份标志,每次应用要调用API时,都需要提供App Key和使用人账号,这样方便新浪统计某个应用的使用频率,这样既能保证某个应用不能频繁调用API,避免出现恶意攻击新浪的事件,另一方面,新浪也可以通过使用频率来进行热门应用的推荐。而App Secret是新浪微博分配给某个应用的密码,这是为了保证其真实性,这个是唯一的,这样可以防止其他应用冒充某个热门应用。2.2.3 OAuth2.0授权认证OAuth协议16的全称是开放式认证协议,该协议为用户资源的授权提供了一个安全、开放而又简易的标准。与以往的授权方式不同之处是OAuth的
34、授权不会使第三方触及到用户的用户名和密码等敏感信息。即第三方无需使用用户的用户名和密码就可以申请获得该用户授权的资源。Access token(访问令牌)是OAuth协议的核心,它代表的是服务器端授权给第三方应用程序访问用户个人私有信息的一个标识,通常是以一组字符串的形式返回给第三方应用程序,该字符串中标示了访问用户私有信息的范围、访问时间段等信息。新浪微博为了保护用户的隐私,对于应用所有访问用户的行为,都需要用户的同意,而同意的方式就是需要用户自己输入账户信息,包括账号和密码,然后点击“同意”,新浪微博会自动给应用一个通行证,此时应用才能提取用户的信息。目前用户的身份鉴定有两个版本,一个是O
35、Authl.0,另一个是OAuth2.0,目前新浪微博对两个版本都进行支持,但是从2013年1月1日起,就只支持OAuth2.0,所以为了使本系统保持连续性,本系统使用OAiith2.0认证机制。相比于OAuthl.0,OAulh2.0的使用更加方便和安全,它也是未来最主要的用户身份验证和授权方式。下图是OAuth2.0的授权流程17:图2.2 新浪OAuth2.0认证流程新浪微博提供的最新JAVA SDK的版本是Weibo4j oauth2.0 beta 2.1.1,它是一款基于新浪微博开放平台18API(V2)接口的支持OAuth2.0授权认证方式的JAVA SDK,第三方开发者可以通过这
36、个SDK开发自己的Application。开发者首先需要拥有一个平台账号,在调用API接口采集数据之前需要进行相关配置和认证授权,步骤如下:(1) 用户向新浪微博OAUTH2.0服务提供商申请应用,获得应用专属App Key和App Secret。(2) 通过新浪微博开放平台获取Request Token。未经服务器授权的Request Token中包含了对应密钥、加密算法、发起请求的时间戳、随机字符串与版本号信息。(3) 向新浪微博服务器Request Token授权地址发送请求,服务器同意用户的请求,并向其颁发未经用户授权的Oauth Token与对应的Oauth Secret。(4) 将
37、上一步得到的Token与Secret发给新浪微博用户授权地址申请Request Token授权。(5) 授权后,用户再向新浪微博Access Token地址发起请求,将上步授权的Request Token换取成Access Token。(6) 服务器同意用户请求,并向其颁发通过新浪微博授权的Access Token与对应的密钥。(7) 用户将获得的授权的Access Token,就可以获得软件对于用户身份资源的使用授权。2.2.4 微博内容的获取这部分是数据获取部分最核心的功能,也是实现最难的部分。针对微博内容的获取,新浪微博提供了多种方法13,如下表所示:表2.2 用于微博内容获取的API及
38、其功能APIAPI功能statuses/friends_timeline获取当前登陆用户及其所关注用户的微博statuses/user_timeline获取某个用户最新发表的微博列表statuses/user_timeline/ids获取用户发表的微博的IDstatuses/show根据微博ID获取单条微博内容以上4个方法中的前两个是直接获取微博的API,后两个可以结合起来获取微博,所以需要选择一种方式来获取微博内容。对于第一个API,它能获取当前登陆用户和其关注者的微博,如果使用它的话必须要使用所有用户的账号和密码进行登陆,显然是不能遍历整个微博网络的,所以不能选择该API。对于第二个API
39、,它所需的参数为微博用户的uid和用户的昵称,从实用性角度来说,该API是可用的,但是该API次只能返回最新的20条微博。综上,本系统采用后第二种方式调用API做到遍历授权用户的微博信息。这样做的好处是,使用statuses/user_timeline/ids可以获取到某用户发表的全部微博的id号,这样可以保证遍历,能满足本系统的要求。2.3 本章小结本章主要对基于JAVA的新浪微博信息采集所用到的关键技术进行介绍,详细介绍了新浪微博开发平台中JAVA SDK、微博应用的创建过程、微博授权认证流程以及微博信息的获取,是本论文的主要技术概述。第3章 信息采集系统设计与实现3.1 系统总体设计经过
40、对新浪微博信息采集系统的原理及关键技术的研究,本文设计的微博信息采集系统的主要目标有以下几点:(1) 通过JAVA编程,调用新浪微博官方提供的API接口,实现对新浪微博授权用户好友微博信息的主题采集,通过输入一个关键字,能够采集到授权用户好友微博中所有与之相关的微博。(2) 将采集到的微博用户的id和微博内容显示出来并以txt文件的形式保存来,同时能够显示保存历史采集记录。根据上述思想,设计的微博信息采集系统的总体结构如图3.1所示。系统基本上可以分为四个部分:新浪微博身份认证部分,调用API接口采集信息部分,关键词匹配部分以及信息的显示与保存部分。图3.1 系统总体设计通过对新浪微博调用AP
41、I接口实现信息采集的分析与研究,确定了一整套采集方案。在采集过程中,首先需要的是获取新浪微博的身份验证,即申请Access Token码,从而获取对新浪微博开发的权限。进行身份验证以后,就可以开始对新浪微博进行开发了。在调用API接口Timeline获得授权用户所有的微博信息以后,就可以通过输入关键词对微博信息进行关键词匹配,如果匹配成功,就将微博信息中的id和微博内容显示在框架并以txt文件的形式保存下来。由于新浪微博对API接口调用的次数和频率有限制,一旦达到限制,系统将等待几分钟后才能进行采集。通过对系统的详细分析,最终得到的系统运行流程图如图3.2所示:图3.2 系统流程图3.2 系统
42、各模块实现3.2.1 授权认证的实现(1) 注册应用。到新浪微博开放平台去注册并创建一个应用,地址是:http: /open. weibo. com/development。新浪官方会给每一个应用一个专属的App Key和App Secret。我事先已经注册了应用并获得了App Key和App Secret,如图3.3显示:图3.3 开发者信息(2) 下载SDK。到新浪官方下载各种开发语言对应的SDK版本,下载地址:(3) 填写配置文件。把下载得SDK导入到项目中去,找到config.properties文件,打开并填写好其中的client_ID、client_SERCRET和redirect
43、_URI三个参数,他们分别填写你的应用的App Key、App Secret和回调地址。代码如下:client_ID=APP KEYclient_SERCRET=APP SERCRETredirect_URI=(4) 获取code参数。运行OAuth4Code.JAVA类,获取code,即用户授权登陆后,地址栏上出现的code。这里需要注意一下,我们需要在原代码上稍加修改,后则运行会报错,修改后的代码如下:Oauth oauth = new Oauth();BareBonesBrowserLaunch.openURL(oauth.authorize(code);System.out.print
44、ln(oauth.authorize(code);运行代码后会弹出一个浏览器网页:(5) 通过code换取Access Token。获取到code后,接下来把code复制到控制台中,然后点击Enter键,会输入一些信息,记录下其中的Access Token。获取到Access Token后,表示我们的应用已经授权成功,我们就可以通过Access Token来访问新浪微博API的接口。3.2.2 启动模块的实现启动模块主要就是应用程序的启动界面,后面的大部分功能都是在该界面完成展示的,该界面主要包括功能按钮区和数据展示区两部分,实现过程中涉及到的关键技术是:“设置该应用程序的背景图和图标”。JF
45、rame是由这么几部分组成:最底下一层JRootPane,上面是glassPane(一个JPanel)和layeredPane(一个JLayeredPane),而layeredPane又由contentPane(一个JPanel)和menuBar构成。下面就是实现的关键代码:%监听器注册 tosearch.addActionListener(new JAVA.awt.event.ActionListener() public void actionPerformed(JAVA.awt.event.ActionEvent evt) tosearchActionPerformed(evt); );
46、 jTextArea1.setEditable(false); jTextArea1.setColumns(20); jTextArea1.setRows(5); jScrollPane2.setViewportView(jTextArea1); %信息采集框架参数设置 JAVAx.swing.GroupLayout layout=new JAVAx.swing.GroupLayout(getContentPane(); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup (JAVAx.swing.GroupLayout.Alignment.LEADING) .addComponent(jSeparator1) .addGroup(layout.createSequentialGroup() .addComponent(jScrollPane1) .addContainerGap() .addGroup(layout.createSequenti