




已阅读5页,还剩19页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
微博信息抓取系统微博信息抓取系统【摘要】针对微博中庞大的数据量和用户关系群,本文提出并实现了基于新浪开放平台与Oauth2.0的微博信息抓取系统。该系统主要实现的功能有:(1)微博大厅的滚动微博及其评论的抓取(2)微博用户的好友及其相互关系的抓取。通过线程池和数据库实现了微博信息的抓取和存储,并通过prefuse的API,图形化的显示出用户关系。从实际运行效果分析,该抓取系统能够满足各种SNS应用的内容填充,及网络用户社会网络关系分析。【关键词】Oauth2.0;新浪开放平台;社会网络关系;prefuse1 引言1.1 研究背景及意义随着移动互联网的发展,中国迎来了真正的微博时代。微博由于其内容简短,写作门槛低,发布渠道便捷化,多样化,同步化,使得信息生产趋于零时间。与其他信息交流模式不同,微博最大的特点在于技术上的便携性。2009年,3G牌照的发放标志着移动互联网时代的到来,移动手机和互联网这两种在中国发展最为迅速的媒介开始融合在一起,为微博的快速扩张做了技术上的准备,与传统博客相比,微博对用户能够产生很强粘性的原因,就在于其在技术上无可比拟的便携性。用户可以通过各种方式登陆微博,发表微博。尤其是手机和微博的绑定使得这以新媒介对微博用户的接近性满足了4A的元素,即Anything,anywhere,anyone,anytime。任何用户可以在任何时间任何地点发布任何内容。从此,人们的信息交流得到了空前的大解放。微博信息抓取系统通过开放平台的API抓取我们所需要的信息,为各式各样的SNS1社区应用在运营初期充实其数据量和用户量,以吸引更多的用户关注和使用。SNS社区交友是现在网络用户之间相互交流的最主要方式。当前最流行的SNS网络莫过于开心网,人人网,以及各大微博了,其中以新浪微博的活跃用户量最为庞大,本课题主要以新浪微博为主要研究和抓取对象,实现信息抓取的功能。整个系统的框架拥有较强的可扩展性,可根据需要增加其他SNS网络社区的抓取模块。另外,本系统还从网络用户的社会网络关系出发,图形化的展示了网络用户之间的社交关系1.2 本课题主要工作本文主要解决的问题有抓取新浪微博的微博大厅数据已经其相关的评论和用户信息。包括新浪微博的Oauth2.0认证,通过调用新浪微博的API,得到并解析服务器返回的json文档,建立相应的数据库,储存在数据库中。并通过Prefuse对抓取的微博用户好友关系进行了可视化的显示。实现全自动的抓取、解析、和数据存储过程。 大大提高了信息收集的工作效率,并大大降低了信息收集的出错率。满足了企事业公司对微博信息的内容需求和网络用户的社会关系分析。2 新浪微博开放平台2.1 微博用户的授权认证2.1.1 新浪微博应用创建新浪微博开放平台允许所有微博用户创建自己的应用,用户只要填写清楚开发者的详细信息和应用的相关资料就可以创建自己的应用了。应用创建成功后,开发者将会获得该应用的APP KEY和Sercret Key。我们就是通过这两个key进行相关的技术开发工作。并且通过这两个key唯一标识我们的应用。其新浪微博应用创建和发布的流程图如图1所示。图 1 新浪开放平台应用创建流程及发布流程图2.1.2 OAuth2.0授权认证 OAuth2.0是从2006年开始设计OAuth2协议的下一个版本。OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用。OAuth允许用户提供一个令牌,而不是用户名和密码来访问他们存放在特定服务提供者的数据。每一个令牌授权一个特定的网站(例如,视频编辑网站)在特定的时段(例如,接下来的2小时内)内访问特定的资源(例如仅仅是某一相册中的视频)。这样,OAuth允许用户授权第三方网站访问他们存储在另外的服务提供者上的信息,而不需要分享他们的访问许可或他们数据的所有内容。相比于OAuth1.0,OAuth2.0整个授权验证流程更加简单和安全。也是新浪微博开发平台未来最主要的用户验证和授权方式。使用新的2.0协议进行授权认证。开发者只需要调用oauth2/authorize接口引导用户授权,并在授权后重定向的网页得到code码后向服务器oauth2/access_token接口换取access_token,就可以使用这个access_token调用新浪微博的API了。其授权的基本流程如图2所示:图 2 OAuth认证基本流程虽然2.0的授权机制更简单安全,但是越安全越说明其限制越多,其中access_token的有效期在开发测试阶段只有24小时。在24小时之后就必须重新授权获取新的access_token。而新浪微博的一些接口也有访问频次限制。在软件开发测试阶段,通常一个接口的访问频次限制在150次/小时,当应用审核通过正式发布以后将会有更多更大的权限。其授权标准也会有一定的提升,访问频次的限制将提高,access_token的有效期也会延长。当然开发者也可以和开放平台申请更高的访问频次和token有效期,开放平台会根据你应用的类型和规模审核你的请求。2.2 新浪微博API2.2.1 JSON数据交换格式JSON(Javascript Object Notation),是一种轻量级的数据交换格式3 ,它是JavaScript的一个子集,但它是独立于语言的文本格式,易于人阅读和编写,同时也易于机器解析和生成。它的这些特性使它成为理想的数据交换语言。JSON构建于两种结构。一种是键值对的集合形式,一种是值的有序列表。这些结构使得大部分现代计算机语言都以某种形式支持它们,这使一种数据格式在同样基于这些结构的编程语言之间交换成为可能。与XML比较,JSON在Web数据交换处理上的更具优势。采用JSON来缓存元数据,便于存储复杂的验证数据,客户端容易解析和使用。在具体实现上,通过服务器程序生成JSON存储验证数据和函数,利用AJAX技术设计客户端函数来访问元数据以验证用户输入。实现的结果表明:由于使用JSON存储复杂的元数据和验证规则,该方案在保证安全性和可扩展性的同时,提高了验证效率。2.2.2 statuses/public_timeline接口此接口4是用于返回最新的公共微博,也就是微博大厅的最新微博。该接口使用的是GET请求方式,返回的是JSON格式的微博数据。由于我们使用的是OAuth2.0方式授权,我们的请求参数将非常简单。只需要将之前授权得到的access_token和需要请求的返回记录条数count以及返回结果的页码page传给服务器就可以了。其请求参数说明如表1所示:表 1 public_timeline请求参数说明必选类型及范围说明sourcefalsestring采用OAuth授权方式不需要此参数,其他授权方式为必填参数,数值为应用的AppKey。access_tokenfalsestring采用OAuth授权方式为必填参数,其他授权方式不需要此参数,OAuth授权后获得。countfalseint单页返回的记录条数,默认为50。pagefalseint返回结果的页码,默认为1。base_appfalseint是否只获取当前应用的数据。0为否(所有数据),1为是(仅当前应用),默认为0。请求服务器成功之后会返回一串JSON格式的数组。数组中的每个元素就是一个微博信息。它包括了微博内容、微博发表者、微博评论和转发次数等等重要信息。我们将其全部解析出来存储在我们的数据库中。该接口返回数据说明如表2所示:表 2 public_timeline接口返回字段说明返回值字段字段类型字段说明idstrstring字符串型的微博IDcreated_atstring创建时间idint64微博IDtextstring微博信息内容sourcestring微博来源favoritedboolean是否已收藏truncatedboolean是否被截断in_reply_to_status_idint64回复IDin_reply_to_user_idint64回复人UIDin_reply_to_screen_namestring回复人昵称midint64微博MIDbmiddle_picstring中等尺寸图片地址original_picstring原始图片地址thumbnail_picstring缩略图片地址reposts_countint转发数comments_countint评论数annotationsarray微博附加注释信息geoobject地理信息字段userobject微博作者的用户信息字段2.2.3 comments/show接口此接口5是根据微博ID返回该微博的评论列表。该接口和上面的timeline接口使用方法基本上相同。但是它多了几个可选参数以满足我们个性化的需求:since_id参数可以指定返回比since_id时间晚的评论。max_id参数可以指定返回小于等于max_id的评论。filter_by_author参数可以对返回的评论按照评论者类型进行筛选,例如可以只返回关注者的评论,或者是陌生人的评论,其请求参数说明如表3所示:表 3 comments/show接口返回字段说明必选类型及范围说明sourcefalsestring采用OAuth授权方式不需要此参数,其他授权方式为必填参数,数值为应用的AppKey。access_tokenfalsestring采用OAuth授权方式为必填参数,其他授权方式不需要此参数,OAuth授权后获得。idtrueint64需要查询的微博ID。since_idfalseint64若指定此参数,则返回ID比since_id大的评论(即比since_id时间晚的评论),默认为0。max_idfalseint64若指定此参数,则返回ID小于或等于max_id的评论,默认为0。countfalseint单页返回的记录条数,默认为50。pagefalseint返回结果的页码,默认为1。filter_by_authorfalseint作者筛选类型,0:全部、1:我关注的人、2:陌生人,默认为0。请求服务器成功之后会返回一串JSON格式的数组。数组中的每个元素就是一个评论信息。它包括了评论内容、评论发表者、评论的微博和该评论的回复评论等等重要信息。我们将其全部解析出来存储在我们的数据库中。该接口返回数据说明如表4所示表 4 comments/show接口返回字段说明返回值字段字段类型字段说明created_atstring评论创建时间idint64评论的IDtextstring评论的内容sourcestring评论的来源midint64评论的MIDuserobject评论作者的用户信息字段statusobject评论的微博信息字段reply_commentobject回复的评论信息字段2.2.4 friendships/friends/in_common接口此接口6是用户获取两个用户之间共同关注人列表。选此接口的目的是使我们可以得到一个比较聚合的网状关系集合,以达到分析社会网络关系的目的。在此,我选择了一个热门微博用户的UID作为测试SUID。以微博大厅抓取到的用户UID作为需要获取共同关注好友的UID。来获取他们的共同好友。其请求参数说明如表5所示:表 5 获取共同关注人接口返回字段说明必选类型及范围说明sourcefalsestring采用OAuth授权方式不需要此参数,其他授权方式为必填参数,数值为应用的AppKey。access_tokenfalsestring采用OAuth授权方式为必填参数,其他授权方式不需要此参数,OAuth授权后获得。uidtrueint64需要获取共同关注关系的用户UID。suidfalseint64需要获取共同关注关系的用户UID,默认为当前登录用户。countfalseint单页返回的记录条数,默认为50。pagefalseint返回结果的页码,默认为1。请求服务器成功之后会返回一串JSON格式的数组。数组中的每个元素就是一个用户信息。我们将其全部解析出来存储在我们的数据库中。该接口返回数据说明如表6所示表 6 获取共同关注人接口返回字段说明返回值字段字段类型字段说明idint64用户UIDscreen_namestring用户昵称namestring友好显示名称provinceint用户所在地区IDcityint用户所在城市IDlocationstring用户所在地descriptionstring用户描述urlstring用户博客地址profile_image_urlstring用户头像地址domainstring用户的个性化域名genderstring性别,m:男、f:女、n:未知followers_countint粉丝数friends_countint关注数statuses_countint微博数favourites_countint收藏数created_atstring创建时间followingboolean当前登录用户是否已关注该用户allow_all_act_msgboolean是否允许所有人给我发私信geo_enabledboolean是否允许带有地理信息verifiedboolean是否是微博认证用户,即带V用户allow_all_commentboolean是否允许所有人对我的微博进行评论avatar_largestring用户大头像地址verified_reasonstring认证原因follow_meboolean该用户是否关注当前登录用户online_statusint用户的在线状态,0:不在线、1:在线bi_followers_countint用户的互粉数statusobject用户的最近一条微博信息字段3 社会网络关系分析3.1 SNS社区交友SNS,全称Social Networking Services,即社会性网络服务,专指旨在帮助人民建立社会性网络的互联网应用服务,根据哈佛大学的心理学教授Stanley Milgram提出的六度分隔理论,即最多通过六个人你就能够认识任何一个陌生人。按照六度分割理论,每个个体的社交圈都在不断放大,最后成为了一个容纳全世界人类的巨型网络7,这就是社会性网络的早期理解。后来有人根据这种理论,创立了面向社会性网络的互联网服务,并通过“熟人的熟人”来进行网络社交拓展,比如Friendster,wallop,adoerme等。SNS的实名制是用户快速找到熟人的基础,用户真实信息可以形成用户关系的真是相关性,这种相关性可以让系统对用户之间进行匹配。从而是用户更快的找到自己的熟人。SNS用户关系是实现信息传播的渠道基础,一维或者多维的用户真实关系,让用户之间形成了一张巨大的社交网。这张网可以容纳整个世界的人,从而形成一种联动效应,但这种社交方式只是人们社交拓展的一种方式,并非社交拓展的全部。在国内,SNS的的表现形式也越来越多样,网络用户进行社交拓展的方式也越来越多。比如根据相同话题而进行凝聚的百度贴吧。根据相同兴趣爱好而进行凝聚的开心网,豆瓣网。根据相同学习经历而凝聚的人人网,QQ校友等等,都被纳入了SNS的范畴。事实上,目前SNS网站已经成为了一种很火爆的互联网现象,如果说美国SNS的高速发展是因为具有庞大的用户基础,那么我国SNS的巨大发展则与高速发展的互联网用户信息群息息相关,根据中国互联网络信息中心的报告,中国网民规模已经跃居世界第一位了。开心网的火爆发展已经掀起了国内SNS的井喷,SNS已经是目前互联网行业最受瞩目的新兴领域。下面是国内几个知名SNS网站首页截图图 3开心网首页图 4人人网首页3.2 LBS基于位置服务LBS8,全称 Location Based Service。它是通过电信移动运营商的无线电通讯网络(如GSM网、CDMA网)或外部定位方式(如GPS)获取移动终端用户的位置信息,在GIS(Geographic information System)平台的支持下,为用户提供相应服务的一种增值业务。随着移动互联网和移动通信软硬件的发展,手机不仅仅只用于打电话发短信了。玩游戏,交朋友,看视频等等都成了不少手机用户必不可少的娱乐项目了。目前,内嵌GPS模块的智能手机逐步成为市场的主流,由于通过GPS模块能够获得速度、方向以及二维乃至三维的空间位置信息,其所带来的好处不仅仅是导航,其他以位置为基本特征的相关服务日渐兴起,越来越收到大众的青睐。此外,由于具备GPS导航功能的手机都集成有地图数据,是LBS业务实现的最佳载体,通过将电子地图,客户关心的位置信息以及移动互联网信息三者融合,这样的技术将会带来新的商业模式和盈利模式。例如主打陌生人交友的手机端软件陌陌。签到模式休闲娱乐类软件嘀咕,街旁等等。本课题的研究对于LBS类软件也有着一定的辅助功能,它能够帮助该类软件在运营初期增强和积累数据库数据量和用户量。图 5 LBS软件陌陌图 6 LBS软件街旁图 7 LBS软件嘀咕图 8 LBS 软件遇见3.3 社会网络社会网络9是指社会成员之间因为互动而形成的相对稳定的关系体系,社会网络关注的是人们之间的互动关系,社会互动会影响人们的社会行为6。从社会网络的角度出发,人在社会环境中的相互作用可以表达为基于关系的一种模式或规则,而基于这种关系的有规律模式反映了社会结构,这种结构的量化分析是社会网络分析的出发点。近年来,随着图论,概率论以及各种几何学的发展和完善,社会网络分析作为一种应用性很强的社会学研究方法越来越受人瞩目。在社会学中,网络研究通常有两种视角:第一,将网络视为一种分析工具,凭借这种工具可以理清行动者之间,行动者与其环境之间的关系;第二,将网络视为由行动者之间的关系所构成的社会结构,此时关系本身成为研究的对象。网状结构通常指网络内部各行动者之间相对稳定的关系模式或“结构洞”模式。外国学者伯特是最早系统阐述“结构洞”这个概念的学者,用它来特指网络中某些行动者之间关系缺乏的现象,按照伯特的观点,当网络中人们之间没有直接关系或关系缺失时,网络就会出现空洞,即所谓的“结构洞”。“结构洞”之所以重要,是因为“结构洞”通常构成了网络中信息折射和资源流动的“阀门”,是否折射或流动,如何折射或流动,这一切都可以掌控在占据这个“结构洞”的行动者手里。因此,在网络中占有的“结构洞”越多,行动者在结构上所占有的优势就越大,通过这些优势获得回报的可能性就越高。通过研究网络关系,有助于把个体间关系、“微观”网络与大规模的社会系统的“宏观”结构结合起来。图9是社会网络关系图。图 9 社会网络关系图3.4 Prefuse可视化工具我们处在一个信息爆炸的时代,对繁杂的抽象信息之间的复杂关系进行探索的努力,促使了信息可视化这一崭新科学领域的出现。Prefuse10是一个可扩展的软件框架,它可以帮助Java语言开发者开发交互的信息可视化程序。它在分析社会网络关系有巨大的作用,我们可以将我们所需要绘制的绘图数据转换为prefuse内部数据的形式,graph,tree。它支持由表,图,树组成的数据结构,字段的数据索引和选择列的查询,并且高效的利用内存。并且通过一组活动的时序机制来实现动画,包含了可视化的变形效果,包括物体位置移动和通过空间的放大缩小,它还融合了lucene文本查询engines,并且内建了类似于SQL的语言语句可以针对数据进行行和列的操作。在位置和动画中还利用了物理力学的模拟,使整个动画的效果非常的真实好看。它支持从XML,数据库导入绘图数据。开发者只要通过简单使用他的API就能将数据库中的数据绘制出来。微博用户之间的好友关系就是一张网络,好友的好友的好友等关系不断蔓延,形成一个网状结构,用prefuse可视化的展示社会关系将会非常的直观和清晰11。图10是Prefuse分析社交网络的效果图图 10 Prefuse社交网络分析图4 数据库连接技术4.1 MYSQLMySQL是一个小型关系数据库管理系统12。它是完全网络化的跨平台关系型数据库系统,是一个真正的多用户,多线程SQL数据库服务器,同时是具有C/S体系结构的分布式数据库管理系统,它具有功能强,使用简便,管理方便,运行速度快,安全可靠性强等有点,用户可以利用许多语言编写访问Mysql数据库的程序,对于中,小型应用系统是非常理想的。除了支持标准的ANSISQL语句,更重要的是,它还支持多种平台。它支持Linux,Mac OS,Windows等多种操作系统,并且为多种编程语言提供了API,提供了TCP/IP、ODBC和JDBC等多种数据库连接途径。这些系统特性使得它收到绝大多数个人开发者和中小型企业的追捧。目前Internet上流行的网站架构方式就是LAMP(Linux+Apache+MySQL+PHP)。由于这四个软件都是免费的或者开源软件,因此使用者可以不用花一分钱就建立起一个稳定、免费的网站系统。4.2 JDBCJDBC,全称Java Database Connectivity 13是一种用于执行SQL语句的Java API.提供了诸如查询和更新数据库中数据的方法。它由一组Java语言编写的类与接口组成。使用JDBC可以很容易地把SQL语句传送到任何关系型数据库中。JDBC API 提供两种主要接口:一是面向开发人员的Java.sql程序包,使得Java程序员能够进行数据库连接,执行SQL查询,并得到结果集合,另一方向是面向底层数据库厂商的JDBC驱动,它介于前端应用程序与后端数据源之间。根据其特性不同,大致分为4种类型:1. JDBC-ODBC桥驱动程序。应用程序通过JDBC-ODBC桥,以调用ODBC连接数据源,由于微软windows系统中的ODBC大多已支持各种类型的数据源,因此在建构上较为方便,可直接使用JDK附属的驱动程序进行连接。但是由于经过了桥的转换,因此在效率上并不十分理想。因此不太适合于企业应用上。2. Native API 驱动程序。此类型驱动程序也需要经过类似桥的机制连接数据源,所不同的是,此类型的桥为原声函数库,是软件厂商针对其数据库自行开发的。由于使用了源生码,提高了执行速度。但如果出错,修改起来也将非常麻烦。3. Net-Protocol 驱动程序。此类JDBC驱动程序会将SQL语句转换成为标准网络协议,交由数据库网关或应用程序服务器处理,应用程序服务器将标准网络协议翻译成为数据库厂商的专有特殊数据库访问协议与数据库通信。此类驱动程序可充分运用程序服务器的安全机制,并且不需要额外的ODBC或者原生函数库等机制,因此系统可移植性强。4. Native-Protocol 驱动程序。此类驱动程序不需要任何中介机制,直接转换JDBC调用,成为DBMS的网络协议,直接访问数据源,这对Internet应用是高效的,但是由于缺乏安全机制的支持,可能会存在一些潜在的安全隐患。Java与JDBC的结合,使程序员可以只写一次数据库应用软件后,就能在各种不同数据库上运行,真正发挥了Java“编写一次,处处运行”的优势。4.3 本系统对数据库连接的封装本次课题在JDBC的基础写了一个管理数据库的封装类。封装了与数据库连接方法,数据库数据更新方法,类结构如图11所示。图 11 数据库管理类本系统所用到的数据库表结构如图12所示:图 12 数据库表结构图 13 好友关系表结构图 14 微博评论表结构图 15 微博信息表结构图 16微博用户表结构5 实验环境本系统所使用的开发环境是windows系统。理论上也支持Linux系统。开发语言使用的是Java程序语言,开发工具使用的是eclipse。另外本系统还使用了新浪开放平台的weibo4J开源代码和Prefuse的开源框架。引用的外部jar包如图17所示。图 17 系统引用jar包6 新浪微博抓取系统实验方案6.1 功能介绍。本工程模块用于实现新浪微博的授权认证和微博信息的抓取。是整个系统的核心功能。其整体功能模块划分如图18所示:图 18 系统模块划分图6.2 实现方案介绍首先我们需要完成测试用户的授权认证过程:我们需要的是打开浏览器请求/oauth2/authorize接口。把我们之前申请好的应用的App_key和Sercret Key作为参数传过去,服务器会跳转到认证页面。输入测试用户的微博账号和密码。服务器会跳转到我们之前申请应用时设定的重定向页面。并且在重定向页面的URL后面会带有一个code参数。例如(/jayslong?code=f98824ae9dc0552b4bf5a07e4778cfbd)我们根据这个code去请求/oauth2/access_token接口。服务器认证通过后就会返回经过授权了的access_token。我们就可以用这个token去请求开放平台的API了。图19是新浪微博抓取模块的流程图初始化配置文件和线程池启动新浪抓取线程数据库操作类存入数据库中请求public_timeline接口,抓取大厅微博解析返回数据请求friends/in_common接口,抓取共同好友请求comments/show接口,抓取微博评论得到用户信息得到微博信息初始化判断数据是否存在,防止数据重复不存在存储结束图 19 新浪微博抓取系统设计方案流程图6.3 工程模块各类关系介绍本项目的源代码结构如图20所示:图20 项目代码结构图其中OAuth4Code.java是用来获取access_token。运行OAuth4Code.Java将会跳完新浪服务器进行认证。运行截图如图21所示图 21 授权认证过程DBHelp.java是数据库管理类。StartUP.java是新浪抓取模块的启动类。WeiboPrefuse.java是用来可视化显示好友关系的工具类。prefuse包里面是开源框架prefuse的源码,weibo4j包里面是新浪微博开放平台的SDK。里面封装了一些联网请求和返回数据的数据结构。 另外整个项目还有几个配置文件需要注意,通过配置这几个文件,可以很方便的将其中的模块部分或完全移植到相应的计算机环境中。在src根目录下有一个perties文件,该文件用于配置新浪开放平台应用的相关信息。其内容如图22所示:图 22 perties配置文件client_id:是我们申请新浪开放平台应用是得到应用ID。client_SERCRET: 是我们申请新浪开放平台应用是得到应密钥。通过这两个id可以帮助新浪服务器区分我们的应用,并且防止我们的应用给他人盗用。redirect_URI:这个当用户授权成功后跳转的网页URI。我们需要一个可以访问的网页供用户授权成功后跳转。这个重定向URL必须要和我们申请应用的时候设定的重定向URL一致,否则服务器会抛出错误导致认证失败。baseURL:所有接口的URL都是以这个为基础拼接出来的。access_token:这个是我们以后访问绝大多是API所必须的参数,他是经过我们用户授权后返回的有效的access_token。每个token都有一个有效期,一般在开发阶段。每个token的有效期只有1天。一天后我们就需要重新认证获取新的access_token。当应用提交审核并且通过后,token的有效期将延伸至7天,如果需要更长更久的token有效期,则需要与开放平台交涉申请,开放平台会根据我们应用的状态和性质,调整token的失效期。accessTokenURL:这个URL是用来获取access_token的。authorizeURL:这个URL是用来跳转到服务器进行用户授权认证的。 在config目录下还有一个source.conf文件。该文件是用来配置数据库相关。其大致内容如图23所示:图 13数据库配置文件这四个参数可以根据具体计算机环境中的数据库配置灵活更改。通过这些配置文件,我们可以不更改代码就将项目运行在其他计算机上。大大方便了项目的演示和移植。7 社会网络关系可视化分析本系统使用了Prefuse11框架对抓取到的社会网络关系进行了可视化的分析,其网络关系网状图如图24所示:图 24 社会网络关系网状图在上图中,每个节点代表一个微博用户。而每条线则代表一个用户关系,线条越多说明他/她的好友或者粉丝越多,说明他/她的交际或者知名度很广。例如上图中的小S就是台湾知名艺人兼主持人徐熙娣。她的粉丝是非常多的,所以以她为中心辐射出去的关系线非常的多。我们可以看到,粉丝越多的人,越在网络的中心处。这样体现了显示生活中的现状。明星们总是给粉丝们围在中心处!上图中还有一些个体脱离了这个网络。这可能是因为他的好友或者粉丝不多,也可能是因为他/她的交际圈没有融入到我们所抓取到的这个关系网中,如果我们抓取足够多的数据的话,我相信,所有人都将融入到整个关系网中,这也真正说明了六度分割理论的准确性。8 结束语本系统基于新浪开放平台和OAuth2.0,通过请求开放平台API,获取服务器数据并把他解析出来存储在数据库中。实现了微博数据,微博评论,微博用户,微博用户关系的抓取。并使用prefuse开源框架对微博用户社会网络关系的可视化分析。总的来说整个项目的功能还是很基础的,可扩展和优化的地方还很多。我自己的代码也有很多可以优化的地方。只是由于时间的关系,很多地方都顾及不到。另外如何突破新浪官方的限制也是提高项目整体实用性的重中之重。另外对于p
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 会议服务合同协议书要求说明
- 如何定立装运合同协议书
- 如何写业务员协议合同书
- 土地房屋置换合同协议书
- 土石方工程合同保密协议
- 室外护栏承揽合同协议书
- 外卖店合伙人合同协议书
- 幼儿园合作合同终止协议
- 建筑劳务派遣工合同范本
- 土地指标买卖合同协议书
- 2025浙江温州永嘉县国有企业面向社会招聘25人考试参考题库附答案解析
- 烧结基础理论课件
- 《家庭教育学》全套教学课件
- 法律知识培训课件
- 2024年安康社区工作者考试真题及答案
- 业财融合与价值创造课件
- 长沙市名校小升初分班考试数学试卷(含答案)
- 肺动脉栓塞护理查房
- 农村房地产转让合同协议
- 拉链专业工艺讲解
- 2025版抵押贷款抵押物抵押权登记及变更手续协议模板
评论
0/150
提交评论