为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

微博信息抓取系统设计2

2017-11-27 35页 doc 407KB 24阅读

用户头像

is_003124

暂无简介

举报
微博信息抓取系统设计2微博信息抓取系统设计2 目 录 摘要(关键词) ................................................................................................................. 1 1 引言...........................................................................................................................
微博信息抓取系统设计2
微博信息抓取系统设计2 目 录 摘要(关键词) ................................................................................................................. 1 1 引言.......................................................................................................................... 1 1.1 本课题主要工作.............................................................................................. 1 1.2 本课题主要工作.............................................................................................. 1 2 新浪开放平台.......................................................................................................... 2 2.1 微博用户的授权认证...................................................................................... 2 2.1.1 新浪微博应用创建................................................................................... 2 2.1.2 OAuth2.0授权认证.................................................................................. 2 2.2 新浪微博API .................................................................................................. 3 2.2.1 JSON数据交换格式 ................................................................................ 3 2.2.2 statuses/public_timeline接口 ................................................................... 4 2.2.3 comments/show接口................................................................................ 5 2.2.4 friendships/friends/in_common接口 ....................................................... 6 3 社会网络关系分析.................................................................................................. 7 3.1 SNS社区交友 ................................................................................................. 7 3.2 LBS基于位置服务 ......................................................................................... 8 3.3 社会网络........................................................................................................ 11 3.4 prefuse可视化工具 ....................................................................................... 12 4 数据库连接技术.................................................................................................... 13 4.1 MYSQL.......................................................................................................... 13 4.2 JDBC .............................................................................................................. 14 4.3 本系统对数据库连接的封装........................................................................ 14 5 实验环境................................................................................................................ 16 6 新浪微博抓取系统实验................................................................................ 16 6.1 功能介绍........................................................................................................ 16 6.2 实现方案介绍................................................................................................ 17 6.3 工程模块各类关系介绍................................................................................ 19 7 社会网络关系可视化分析 .................................................................................. 21 8 结束语 .................................................................................................................. 23 参考文献...................................................................................................................... 24 致谢.............................................................................................................................. 25 Abstract(Key words) .................................................................................................... 26 深圳大学本科毕业论文——微博信息抓取系统 微博信息抓取系统 计算机与软件学院计算机科学与技术专业 钟欢 学号:2008130542 【摘要】针对微博中庞大的数据量和用户关系群~本文提出并实现了基于新浪开放平台与Oauth2.0的微博信息抓取系统。该系统主要实现的功能有:(1)微博大厅的滚动微博及其评论(2)微博大厅的用户好友及其相互关系。通过线程池和数据库实现了微博信息的抓取和存储~并通过prefuse的API~图形化的显示出用户关系。从实际运行效果分析~该抓取系统能够满足各种SNS应用的内容填充~及网络用户社会网络关系分析。 【关键词】Oauth2.0,新浪开放平台,社会网络关系,prefuse 1 引言 1.1 研究背景及意义 随着移动互联网的发展,中国迎来了真正的微博时代。微博由于其内容简短,写作门槛低,发布渠道便捷化,多样化,同步化,使得信息生产趋于零时间。与其他信息交流模式不同,微博最大的特点在于技术上的便携性。2009年,3G牌照的发放标志着移动互联网时代的到来,移动手机和互联网这两种在中国发展最为迅速的媒介开始融合在一起,为微博的快速扩张做了技术上的准备,与传统博客相比,微博对用户能够产生很强粘性的原因,就在于其在技术上无可比拟的便携性。用户可以通过各种方式登陆微博,发表微博。尤其是手机和微博的绑定使得这以新媒介对微博用户的接近性满足了4A的元素,即Anything,anywhere,anyone,anytime。任何用户可以在任何时间任何地点发布任何内容。从此,人们的信息交流得到了空前的大解放。微博信息抓取系统通过开放平台的API抓取我们所需要的信息, [1]为各式各样的SNS社区应用在运营初期充实其数据量和用户量,以吸引更多的用户关注和使用。SNS社区交友是现在网络用户之间相互交流的最主要方式。当前最流行的SNS网络莫过于开心网,人人网,以及各大微博了,其中以新浪微博的活跃用户量最为庞大,本课题主要以新浪微博为主要研究和抓取对象,实现信息抓取的功能。整个系统的框架拥有较强的可扩展性,可根据需要增加其他SNS网络社区的抓取模块。另外,本系统还从网络用户的社会网络关系出发,图形化的展示了网络用户之间的社交关系 1.2 本课题主要工作 本文主要解决的问题包括新浪微博的Oauth2.0认证,通过调用新浪微博的API,得到并解析服务器返回的json文档,建立相应的数据库。实现全自动的抓取、解析、和数据存储过程。 大大提高了信息收集的工作效率,并大大降低了信息收集的出错率。满足了企事业公司对微博信息的内容需求和网络用户的社会关系分析。 第1页 共22页 深圳大学本科毕业论文——微博信息抓取系统 2 新浪微博开放平台 2.1 微博用户的授权认证 2.1.1 新浪微博应用创建 新浪微博开放平台允许所有微博用户创建自己的应用,用户只要填写清楚开发者的详细信息和应用的相关就可以创建自己的应用了。应用创建成功后,开发者将会获得该应用的APP KEY和Sercret Key。我们就是通过这两个key进行相关的技术开发工作。并且通过这两个key唯一标识我们的应用。 图 1 新浪开放平台应用创建流程及发布流程图 2.1.2 OAuth2.0授权认证 [2] OAuth2.0是从2006年开始设计OAuth协议的下一个版本。OAuth(开放授权)是一个开放,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用。OAuth允许用户提供一个令牌,而不是用户名和密码来访问他们存放在特定服务提供者的数据。每一个令牌授权一个特定的网站(例如,视频编辑网站)在特定的时段(例如,接下来的2小时内)内访问特定的资源 第2页 共22页 深圳大学本科毕业论文——微博信息抓取系统 (例如仅仅是某一相册中的视频)。这样,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次/小时,当应用审核通过正式发布以后将会有更多更大的权限。 2.2 新浪微博API 2.2.1 JSON数据交换格式 JSON(Javascript Object Notation),是一种轻量级的数据交换格式[3],它是JavaScript的一个子集,但它是独立于语言的文本格式,易于人阅读和编写,同时也易于机器解析和生成。它的这些特性使它成为理想的数据交换语言。 JSON构建于两种结构。一种是键值对的集合形式,一种是值的有序列表。这些结构使得大部分现代计算机语言都以某种形式支持它们,这使一种数据格式在同样基于这些结构的编程语言之间交换成为可能。与XML比较,JSON在Web数据交换处理上的更具优势。采用JSON 第3页 共22页 深圳大学本科毕业论文——微博信息抓取系统 来缓存元数据,便于存储复杂的验证数据,客户端容易解析和使用。在具体实现上,通过服务器程序生成JSON存储验证数据和函数,利用AJAX技术设计客户端函数来访问元数据以验证用户输入。实现的结果表明:由于使用JSON存储复杂的元数据和验证,该方案在保证安全性和可扩展性的同时,提高了验证效率。 2.2.2 statuses/public_timeline接口 [11]此接口是用于返回最新的公共微博,也就是微博大厅的最新微博。该接口使用的是GET请求方式,返回的是JSON格式的微博数据。由于我们使用的是OAuth2.0方式授权,我们的请求参数将非常简单。只需要将之前授权得到的access_token和需要请求的返回条数count以及返回结果的页码page传给服务器就可以了。其请求参数说明如表1所示: 表 1 public_timeline请求参数说明 必选 类型及范围 说明 采用OAuth授权方式不需要此参数,其他授权方式为必填参数,source false string 数值为应用的AppKey。 采用OAuth授权方式为必填参数,其他授权方式不需要此参数,access_token false string OAuth授权后获得。 单页返回的记录条数,默认为50。 count false int 返回结果的页码,默认为1。 page false int 是否只获取当前应用的数据。0为否(所有数据),1为是(仅当base_app false int 前应用),默认为0。 请求服务器成功之后会返回一串JSON格式的数组。数组中的每个元素就是一个微博信息。它包括了微博内容、微博发表者、微博评论和转发次数等等重要信息。我们将其全部解析出来存储在我们的数据库中。该接口返回数据说明如表2所示: 表 2 public_timeline接口返回字段说明 返回值字段 字段类型 字段说明 字符串型的微博ID idstr string 创建时间 created_at string 微博ID id int64 微博信息内容 text string 微博来源 source string 是否已收藏 favorited boolean 是否被截断 truncated boolean 回复ID in_reply_to_status_id int64 回复人UID in_reply_to_user_id int64 回复人昵称 in_reply_to_screen_name string 微博MID mid int64 中等尺寸图片地址 bmiddle_pic string 原始图片地址 original_pic string 第4页 共22页 深圳大学本科毕业论文——微博信息抓取系统 缩略图片地址 thumbnail_pic string 转发数 reposts_count int 评论数 comments_count int 微博附加注释信息 annotations array 地理信息字段 geo object 微博作者的用户信息字段 user object 2.2.3 comments/show接口 [12]此接口是根据微博ID返回该微博的评论列表。该接口和上面的timeline接口使用方法基本上相同。但是它多了几个可选参数以满足我们个性化的需求:since_id参数可以指定返回比since_id时间晚的评论。max_id参数可以指定返回小于等于max_id的评论。filter_by_author参数可以对返回的评论按照评论者类型进行筛选,例如可以只返回关注者的评论,或者是陌生人的评论,其请求参数说明如表3所示: 表 3 comments/show接口返回字段说明 必选 类型及范围 说明 采用OAuth授权方式不需要此参数,其他授权方式为必填参数,数值source false string 为应用的AppKey。 采用OAuth授权方式为必填参数,其他授权方式不需要此参数,OAuthaccess_token false string 授权后获得。 需要查询的微博ID。 id true int64 若指定此参数,则返回ID比since_id大的评论(即比since_id时间since_id false int64 晚的评论),默认为0。 若指定此参数,则返回ID小于或等于max_id的评论,默认为0。 max_id false int64 单页返回的记录条数,默认为50。 count false int 返回结果的页码,默认为1。 page false int 作者筛选类型,0:全部、1:我关注的人、2:陌生人,默认为0。 filter_by_author false int 请求服务器成功之后会返回一串JSON格式的数组。数组中的每个元素就是一个评论信息。它包括了评论内容、评论发表者、评论的微博和该评论的回复评论等等重要信息。我们将其全部解析出来存储在我们的数据库中。该接口返回数据说明如表4所示 表 4 comments/show接口返回字段说明 返回值字段 字段类型 字段说明 评论创建时间 created_at string 评论的ID id int64 评论的内容 text string 评论的来源 source string 评论的MID mid int64 评论作者的用户信息字段 user object 评论的微博信息字段 status object 回复的评论信息字段 reply_comment object 第5页 共22页 深圳大学本科毕业论文——微博信息抓取系统 2.2.4 friendships/friends/in_common接口 [13]此接口是用户获取两个用户之间共同关注人列表。选此接口的目的是使我们可以得到 一个比较聚合的网状关系集合,以达到分析社会网络关系的目的。在此,我选择了一个热门 微博用户的UID作为测试SUID。以微博大厅抓取到的用户UID作为需要获取共同关注好友 的UID。来获取他们的共同好友。其请求参数说明如表5所示: 表 5 获取共同关注人接口返回字段说明 必选 类型及范围 说明 采用OAuth授权方式不需要此参数,其他授权方式为必填参数,数source false string 值为应用的AppKey。 采用OAuth授权方式为必填参数,其他授权方式不需要此参数,access_token false string OAuth授权后获得。 需要获取共同关注关系的用户UID。 uid true int64 需要获取共同关注关系的用户UID,默认为当前登录用户。 suid false int64 单页返回的记录条数,默认为50。 count false int 返回结果的页码,默认为1。 page false int 请求服务器成功之后会返回一串JSON格式的数组。数组中的每个元素就是一个用户信 息。我们将其全部解析出来存储在我们的数据库中。该接口返回数据说明如表6所示 表 6 获取共同关注人接口返回字段说明 返回值字段 字段类型 字段说明 用户UID id int64 用户昵称 screen_name string 友好显示名称 name string 用户所在地区ID province int 用户所在城市ID city int 用户所在地 location string 用户描述 description string 用户博客地址 url string 用户头像地址 profile_image_url string 用户的个性化域名 domain string 性别,m:男、f:女、n:未知 gender string 粉丝数 followers_count int 关注数 friends_count int 微博数 statuses_count int 收藏数 favourites_count int 创建时间 created_at string 当前登录用户是否已关注该用户 following boolean 是否允许所有人给我发私信 allow_all_act_msg boolean 是否允许带有地理信息 geo_enabled boolean 第6页 共22页 深圳大学本科毕业论文——微博信息抓取系统 是否是微博认证用户,即带V用户 verified boolean 是否允许所有人对我的微博进行评论 allow_all_comment boolean 用户大头像地址 avatar_large string 认证原因 verified_reason string 该用户是否关注当前登录用户 follow_me boolean 用户的在线状态,0:不在线、1:在线 online_status int 用户的互粉数 bi_followers_count int 用户的最近一条微博信息字段 status object 3 社会网络关系分析 3.1 SNS社区交友 SNS,全称Social Networking Services,即社会性网络服务,专指旨在帮助人民建立社会性网络的互联网应用服务,根据哈佛大学的心理学教授Stanley Milgram提出的六度分隔理论,即最多通过六个人你就能够认识任何一个陌生人。按照六度分割理论,每个个体的 [14]社交圈都在不断放大,最后成为了一个容纳全世界人类的巨型网络,这就是社会性网络的早期理解。后来有人根据这种理论,创立了面向社会性网络的互联网服务,并通过“熟人的熟人”来进行网络社交拓展,比如Friendster,wallop,adoerme等。 SNS的实名制是用户快速找到熟人的基础,用户真实信息可以形成用户关系的真是相关性,这种相关性可以让系统对用户之间进行匹配。从而是用户更快的找到自己的熟人。SNS用户关系是实现信息传播的渠道基础,一维或者多维的用户真实关系,让用户之间形成了一张巨大的社交网。这张网可以容纳整个世界的人,从而形成一种联动效应, 但这种社交方式只是人们社交拓展的一种方式,并非社交拓展的全部。在国内,SNS的的表现形式也越来越多样,网络用户进行社交拓展的方式也越来越多。比如根据相同话题而进行凝聚的百度贴吧。根据相同兴趣爱好而进行凝聚的开心网,豆瓣网。根据相同学习经历而凝聚的人人网,QQ校友等等,都被纳入了SNS的范畴。 事实上,目前SNS网站已经成为了一种很火爆的互联网现象,如果说美国SNS的高速发展是因为具有庞大的用户基础,那么我国SNS的巨大发展则与高速发展的互联网用户信息群息息相关,根据中国互联网络信息中心的报告,中国网民规模已经跃居世界第一位了。开心网的火爆发展已经掀起了国内SNS的井喷,SNS已经是目前互联网行业最受瞩目的新兴领域。 下面是国内几个知名SNS网站首页截图 第7页 共22页 深圳大学本科毕业论文——微博信息抓取系统 图 3开心网首页 图 4人人网首页 3.2 LBS基于位置服务 [4]LBS,全称 Location Based Service。它是通过电信移动运营商的无线电通讯网络(如GSM网、CDMA网)或外部定位方式(如GPS)获取移动终端用户的位置信息,在GIS(Geographic information System)平台的支持下,为用户提供相应服务的一种增值业务。 随着移动互联网和移动通信软硬件的发展,手机不仅仅只用于打电话发短信了。玩游戏,交朋友,看视频等等都成了不少手机用户必不可少的娱乐项目了。目前,内嵌GPS模块的智能手机逐步成为市场的主流,由于通过GPS模块能够获得速度、方向以及二维乃至三维的空 第8页 共22页 深圳大学本科毕业论文——微博信息抓取系统 间位置信息,其所带来的好处不仅仅是导航,其他以位置为基本特征的相关服务日渐兴起,越来越收到大众的青睐。此外,由于具备GPS导航功能的手机都集成有地图数据,是LBS业务实现的最佳载体,通过将电子地图,客户关心的位置信息以及移动互联网信息三者融合,这样的技术将会带来新的商业模式和盈利模式。例如主打陌生人交友的手机端软件陌陌。签到模式休闲娱乐类软件嘀咕,街旁等等。本课题的研究对于LBS类软件也有着一定的辅助功能,它能够帮助该类软件在运营初期增强和积累数据库数据量和用户量。 图 5 LBS软件陌陌 第9页 共22页 深圳大学本科毕业论文——微博信息抓取系统 图 6 LBS软件街旁 图 7 LBS软件街旁 第10页 共22页 深圳大学本科毕业论文——微博信息抓取系统 图 8 LBS 软件遇见 3.3 社会网络 [5]社会网络是指社会成员之间因为互动而形成的相对稳定的关系体系,社会网络关注的 [6]是人们之间的互动关系,社会互动会影响人们的社会行为。从社会网络的角度出发,人在社会环境中的相互作用可以表达为基于关系的一种模式或规则,而基于这种关系的有规律模式反映了社会结构,这种结构的量化分析是社会网络分析的出发点。 近年来,随着图论,概率论以及各种几何学的发展和完善,社会网络分析作为一种应用性很强的社会学研究方法越来越受人瞩目。在社会学中,网络研究通常有两种视角:第一,将网络视为一种分析工具,凭借这种工具可以理清行动者之间,行动者与其环境之间的关系;第二,将网络视为由行动者之间的关系所构成的社会结构,此时关系本身成为研究的对象。 网状结构通常指网络内部各行动者之间相对稳定的关系模式或“结构洞”模式。外国学者伯特是最早系统阐述“结构洞”这个概念的学者,用它来特指网络中某些行动者之间关系缺乏的现象,按照伯特的观点,当网络中人们之间没有直接关系或关系缺失时,网络就会出现空洞,即所谓的“结构洞”。“结构洞”之所以重要,是因为“结构洞”通常构成了网络中信息折射和资源流动的“阀门”,是否折射或流动,如何折射或流动,这一切都可以掌控在占据这个“结构洞”的行动者手里。因此,在网络中占有的“结构洞”越多,行动者在结构上所占有的优势就越大,通过这些优势获得回报的可能性就越高。 通过研究网络关系,有助于把个体间关系、“微观”网络与大规模的社会系统的“宏观”结构结合起来。 第11页 共22页 深圳大学本科毕业论文——微博信息抓取系统 3.4 Prefuse可视化工具 我们处在一个信息爆炸的时代,对繁杂的抽象信息之间的复杂关系进行探索的努力,促使了信息可视化这一崭新科学领域的出现。 Prefuse是一个可扩展的软件框架,它可以帮助Java语言开发者开发交互的信息可视化程序。它在分析社会网络关系有巨大的作用,我们可以将我们所需要绘制的绘图数据转换为prefuse内部数据的形式,graph,tree。它支持由表,图,树组成的数据结构,字段的数据索引和选择列的查询,并且高效的利用内存。并且通过一组活动的时序机制来实现动画,包含了可视化的变形效果,包括物体位置移动和通过空间的放大缩小,它还融合了lucene文本查询engines,并且内建了类似于SQL的语言语句可以针对数据进行行和列的操作。在位置和动画中还利用了物理力学的模拟,使整个动画的效果非常的真实好看。它支持从XML,数据库导入绘图数据。开发者只要通过简单使用他的API就能将数据库中的数据绘制出来。微博用户之间的好友关系就是一张网络,好友的好友的好友等关系不断蔓延,形成一个网状 refuse可视化的展示社会关系将会非常的直观和清晰。图3是Prefuse分析社交网结构,用p 络的效果图 第12页 共22页 深圳大学本科毕业论文——微博信息抓取系统 图 3 Prefuse社交网络分析图 4 数据库连接技术 4.1 MYSQL MySQL是一个小型关系数据库管理系统。它是完全网络化的跨平台关系型数据库系统,是一个真正的多用户,多线程SQL数据库服务器,同时是具有C/S体系结构的分布式数据库管理系统,它具有功能强,使用简便,管理方便,运行速度快,安全可靠性强等有点,用户可以利用许多语言编写访问Mysql数据库的程序,对于中,小型应用系统是非常理想的。除了支持标准的ANSISQL语句,更重要的是,它还支持多种平台。。它支持Linux,Mac OS,Windows等多种操作系统,并且为多种编程语言提供了API,提供了TCP/IP、ODBC和JDBC等多种数据库连接途径。这些系统特性使得它收到绝大多数个人开发者和中小型企业的追捧。目前Internet上流行的网站架构方式就是LAMP(Linux+Apache+MySQL+PHP)。由于这四个软件都是免费的或者开源软件,因此使用者可以不用花一分钱就建立起一个稳定、免费的网站系统。 4.2 JDBC [8]JDBC,全称Java Database Connectivity 是一种用于执行SQL语句的Java API.提供了诸如查询和更新数据库中数据的方法。它由一组Java语言编写的类与接口组成。使用JDBC可以很容易地把SQL语句传送到任何关系型数据库中。JDBC API 提供两种主要接口:一 第13页 共22页 深圳大学本科毕业论文——微博信息抓取系统 是面向开发人员的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的基础写了一个管理数据库的封装类。封装了与数据库连接方法,数据库数据更新方法,类结构下图所示。 图 9 数据库管理类 本系统所用到的数据库表结构如图5所示: 第14页 共22页 深圳大学本科毕业论文——微博信息抓取系统 图 10 数据库表结构 图 11 好友关系表结构 图 12 微博评论表结构 图 13 微博信息表结构 第15页 共22页 深圳大学本科毕业论文——微博信息抓取系统 图 14微博用户表结构 5 实验环境 本系统所使用的开发环境是windows系统。理论上也支持Linux系统。开发语言使用的是Java程序语言,开发工具使用的是eclipse。另外本系统还使用了新浪开放平台的weibo4J [9]开源代码和Prefuse的开源框架。引用的外部jar包如图15所示。 图 15 系统引用jar包 6 新浪微博抓取系统实验方案 6.1 功能介绍。 第16页 共22页 深圳大学本科毕业论文——微博信息抓取系统 本工程模块用于实现新浪微博的授权认证和微博信息的抓取。是整个系统的核心功能。其整体功能模块划分如图16所示: 图 16 系统模块划分图 6.2 实现方案介绍 首先我们需要完成测试用户的授权认证过程: 我们需要的是打开浏览器请求接口。把我们之前申请好的应用的App_key和Sercret Key作为参数传过去,服务器会跳转到认证页面。输入测试用户的微博账号和密码。服务器会跳转到我们之前申请应用时设定的重定向页面。并且在重定向页面的URL后面会带有一个code参数。例如 ()我们根据这个code去请求接口。服务器认证通过后就会返回经过授权了的access_token。我们就可以用这个token去请求开放平台的API了。图16是新浪微博抓取模块的流程图 第17页 共22页 深圳大学本科毕业论文——微博信息抓取系统 初始化配置文 件和线程池 启动新浪抓取线程 初始化 请求public_timeline接口,抓取大厅微博 数据库操作类 得到微博信息 请求comments/show 接口,抓取微博评论 解析返回数据 得到用户信息 请求friends/in_common接口,抓取共同好友 判断数据是否存 在,防止数据重复 不存在 存入数存储结束 据库中 图 17 新浪微博抓取系统设计方案流程图 6.3 工程模块各类关系介绍 本项目的源代码结构如图17所示: 第18页 共22页 深圳大学本科毕业论文——微博信息抓取系统 图17 项目代码结构图 其中OAuth4Code.java是用来获取access_token。运行OAuth4Code.Java将会跳完新浪服务器进行认证。运行截图如图18所示 第19页 共22页 深圳大学本科毕业论文——微博信息抓取系统 图 18 授权认证过程 DBHelp.java是数据库管理类。StartUP.java是新浪抓取模块的启动类。WeiboPrefuse.java是用来可视化显示好友关系的工具类。prefuse包里面是开源框架prefuse的源码,weibo4j包里面是新浪微博开放平台的SDK。里面封装了一些联网请求和返回数据的数据结构。 另外整个项目还有几个配置文件需要注意,通过配置这几个文件,可以很方便的将其中的模块部分或完全移植到相应的计算机环境中。 在src根目录下有一个config.properties文件,该文件用于配置新浪开放平台应用的相关信息。其内容如图19所示: client_id:是我们申请新浪开放平台应用是得到应用ID。 client_SERCRET: 是我们申请新浪开放平台应用是得到应密钥。 通过这两个id可以帮助新浪服务器区分我们的应用,并且防止我们的应用给他人盗用。redirect_URI:这个当用户授权成功后跳转的网页URI。我们需要一个可以访问的网页供用户授权成功后跳转。这个重定向URL必须要和我们申请应用的时候设定的重定向URL一致,否则服务器会抛出错误导致认证失败。 baseURL:所有接口的URL都是以这个为基础拼接出来的。 第20页 共22页 深圳大学本科毕业论文——微博信息抓取系统 access_token:这个是我们以后访问绝大多是API所必须的参数,他是经过我们用户授权后返回的有效的access_token。每个token都有一个有效期,一般在开发阶段。每个token的有效期只有1天。一天后我们就需要重新认证获取新的access_token。当应用提交审核并且通过后,token的有效期将延伸至7天,如果需要更长更久的token有效期,则需要与开放平台交涉申请,开放平台会根据我们应用的状态和性质,调整token的失效期。 accessTokenURL:这个URL是用来获取access_token的。 authorizeURL:这个URL是用来跳转到服务器进行用户授权认证的。 在config目录下还有一个source.conf文件。该文件是用来配置数据库相关。其大致内容如图19所示: 图 1数据库配置文件 这四个参数可以根据具体计算机环境中的数据库配置灵活更改。 通过这些配置文件,我们可以不更改代码就将项目运行在其他计算机上。大大方便了项目的演示和移植。 7 社会网络关系可视化分析 [10]本系统使用了Prefuse框架对抓取到的社会网络关系进行了可视化的分析,其网络关系网状图如图18所示: 第21页 共22页 深圳大学本科毕业论文——微博信息抓取系统 图 18 社会网络关系网状图 在上图中,每个节点代表一个微博用户。而每条线则代表一个用户关系,线条越多说明他/她的好友或者粉丝越多,说明他/她的交际或者知名度很广。例如上图中的小S就是台湾知名艺人兼主持人徐熙娣。她的粉丝是非常多的,所以以她为中心辐射出去的关系线非常的多。上图中还有一些个体脱离了这个网络。这可能是因为他的好友或者粉丝不多,也可能是因为他/她的交际圈没有融入到我们所抓取到的这个关系网中,如果我们抓取足够多的数据的话,我相信,所有人都将融入到整个关系网中,这也真正说明了六度分割理论的准确性。 第22页 共22页 深圳大学本科毕业论文——微博信息抓取系统 8 结束语 本系统基于新浪开放平台和OAuth2.0,通过请求开放平台API,获取服务器数据并把他解析出来存储在数据库中。实现了微博数据,微博评论,微博用户,微博用户关系的抓取。并使用prefuse开源框架对微博用户社会网络关系的可视化分析。 总的来说整个项目的功能还是很基础的,可扩展和优化的地方还很多。我自己的代码也有很多可以优化的地方。只是由于时间的关系,很多地方都顾及不到。另外如何突破新浪官方的限制也是提高项目整体实用性的重中之重。另外对于prefuse框架的应用,网上很多的教程也只是对官方demo的简单运用,prefuse更多更强大的功能,需要我们仔细研究其API和帮助文档。但是不得不承认Prefuse让我开始觉得,Java的SWING也能编写出堪比MFC的用户交互程序。 尽管有这样或者那样的不足,但是在这个毕业设计过程中,我的收获还是很丰富的。我目前在一家手机软件公司担任Android开发程序员,主要项目也是基于LBS的应用软件。之前在项目中也使用过开放平台的相关东西,但是并不深入,通过此次毕业设计,我对整个OAuth认证过程有了更加透彻的认识。对JSON数据交换格式也更加知根知底。并且学习到了很多软件设计的思想。这对我来说都是无比宝贵的财富。 在后续的工作中,将对整个系统线程池进行优化,并从多线程方向进行扩展,提高系统的网络请求效率,并对数据库数据存储方面进行优化,提高数据库存储效率。大幅度提升整个系统的实用性。最后为多方面的网络数据抓取需求提供更好的帮助。 第23页 共22页 深圳大学本科毕业论文——微博信息抓取系统 【参考文献】 [1] 崔娜,盛斌,贾婉莹.SNS网络文化探析------以开心网为例[J]. 北京邮电大学学报:社会科学版, 2009(5): 1-4. [2] 刘镝,张智江,张尼. 基于国内开放平台的Oauth认证框架研究[J], 信息通信技术, 2011 1-4 [3] 杨树林,胡洁萍. JSON数据交换格式及其在数据验证中的应用[J], 北京印刷学院学报, 2008(4) 56-58. [4] 陈飞翔,杨崇俊,申胜利,于文洋,杨建宇. 基于LBS的移动GIS研究[J], 计算机工程与应用, 2006(2) 200-202 [5] 林聚任. 社会网络分析 [M]. 北京师范大学出版社, 2009-4-1. [6] 任志安, 毕玲. 网络关系与知识共享[J]. 情报杂志, 2007(1):75-78. [7] 兰旭辉,熊家军,邓刚. 基于MySQL的应用程序设计[J]. 计算机工程与设计, 2006(3):442-443. [8] 罗荣, 唐学兵. 基于JDBC的数据库连接池的设计与实现[J]. 计算机工程, 2004(9): 92-93. [9] Jeffrey Heer, Stuart K.Card.James A.Landay, prefuse:a toolkit for interactive information visualization[M]. ACM New York,USA 2005. [10] Belue,J.M, Netwrok Visualization Design Using Prefuse Visualization Toolkit[M] 2008.5 [11] (官方API说明) [12] (官方API说明) [13] (官方API说明) [14] 余学军. 六度分割理论成就SNS[J]. 信息网络~ 2008,11, 37-37 第24页 共22页 深圳大学本科毕业论文——微博信息抓取系统 致谢 首先衷心地感谢傅向华老师。在我大学生涯里,给予了很多指导与帮助。本次毕业设计,从选题到论文撰写,给予我很多宝贵的意见。不管是从系统的架构,还是疑难问题的解决,傅老师都给与了非常建设性的意见。傅老师渊博的学识、严谨的治学态度及认真负责的工作态度都使我受到鼓舞和熏陶。在此向傅向华老师表示崇高的敬意和衷心的感谢。 其次,感谢邓泽龙同学。在整个系统的设计上给我很多宝贵的意见,并且提供了个人博客网站给我申请新浪开放平台的站外应用,而在系统开发过程中遇到的多处疑难问题上都给与了我巨大的帮助。他认真负责、热衷钻研的工作学习态度都使我受到很大的激励。在此,向邓泽龙同学表示衷心的感谢。 感谢四年以来老师们的辛勤授课,丰富了我们的知识,拓宽了我们的视野,提高了我们发现问题、解决问题的能力,使我的思想产生了质的飞跃。 感谢开源社区,提供了很多开放源码与类库,为我提供了庞大的优秀代码资源,使我在程序开发过程中得到很多启发。 最后感谢我的父母,含辛茹苦把我养育成才。在此,向我的父母表示由衷的感谢。 第25页 共22页 深圳大学本科毕业论文——微博信息抓取系统 MicroBlog Information Grab System, 【Abstract】 For the huge amount of data and relations in MicroBlog system,this paper put forward and realized a MicroBlog information grab system based on the sina open platform and Oauth2.0.The main function of the information grab system is:(1)Grabing the informations from hall of sina Microbo and its comments .(2)Grabing the relations between the sina Users.Through the thread pool and Mysql database to grab and storage the information, and through the API of prefuse.graphical shows the relations.The running results show that this system satisfy all sorts of SNS Application to fill its contents,and we can also use it to analysis social relations between the network users。 【keywords】 OAuth2.0;sina open platform;social relations;prefuse 指导教师:傅向华 第26页 共22页
/
本文档为【微博信息抓取系统设计2】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索