基于新浪微博的用户信息爬虫及分析毕业论文.doc
《基于新浪微博的用户信息爬虫及分析毕业论文.doc》由会员分享,可在线阅读,更多相关《基于新浪微博的用户信息爬虫及分析毕业论文.doc(32页珍藏版)》请在冰豆网上搜索。
目录
摘要 I
Abstract II
1引言 3
1.1选题背景与意义 3
1.2系统开发工具 3
1.2.1vs2008 3
1.2.2oracle11g 3
1.2.3boost库 3
1.2.4GZIP压缩算法函数库 3
1.2.5JSON格式文件转换函数库 4
2系统需求分析与设计 5
2.1系统需求 5
2.1.1名词说明 5
2.1.2系统功能需求说明 5
2.1.3系统总体功能设计 7
2.2系统数据库构建 9
2.2.1数据库设计 9
2.2.2数据库详细设计 9
3系统详细设计与实现 12
3.1爬虫系统详细设计 12
3.1.1HTTP请求数据包 12
3.1.2HTTP返回数据包 13
3.1.3数据分析与提取 13
3.1.4AnaData类 13
3.1.5数据入库 15
3.2服务端详细设计 16
3.3客户端详细设计 17
3.3.1登录页面 17
3.3.2注册新用户和忘记密码页面 18
3.3.3用户关注列表查询界面 19
3.3.4微博用户标签分类查询 20
3.3.4发布微博并@列表框中的微博用户昵称 20
3.3.5微博用户昵称模糊搜索 21
3.3.6微博用户微博查询 21
4系统部署与测试 22
4.1系统部署图 22
4.2系统测试 22
5结束语 29
参考文献 30
致谢 31
-31-
摘要
随着互联网信息技术的发展,在这个信息时代,数据量的增长速度已经远远超过的我们的想象。
迅速的对这些数据进行处理,进行信息的提取已经成为目前计算机领域一个巨大的难题。
而且无论是政府还是企业,对于大数据的掌握都可以起着至关重要的作用。
数据处理技术蕴含的巨大的商业价值必将被慢慢的挖掘出来。
本文以新浪微博作为信息载体。
对新浪微博的用户信息进行收集和分析,对新浪微博信息数据转化成价值的可行性进行了尝试。
设计出了一个可以获取新浪微博信息的数据收集系统,并进行一定的数据分析和数据展示。
关键词:
C++,新浪微博,数据挖掘
Abstract
WiththeInternetdevelopmentofinformationtechnology,inthisageofinformation,theamountofdatagrowthhasfarexceededourimagination.Rapidprocessingofthesedata,theextractionofinformationhasbecomeahugeprobleminthecomputerfield.Andwhethergovernmentorcorporate,cangraspforbigdataplaysavitalrole.Thetremendouscommercialvalueofdataprocessingtechnologyisboundtobeslowlyexcavated.
Inthispaper,SinaWeiboasaninformationcarrier.SinaWeibouserinformationcollectionandanalysistheSinamicrobloggingdataintothevalueofthefeasibilityofatry.DesignonecangetthetheSinamicroblogginginformationsystemofdatacollectionanddataanalysisanddatapresentation.
Keywords:
c++,SinaWeibo,DataMining
1引言
1.1选题背景与意义
随着互联网信息技术的发展,目前的信息增长的速度已经进入了飞速膨胀的阶段。
“如果说IBM的主机拉开了信息化革命的大幕,那么‘大数据’才是第3次浪潮的华彩乐章。
”著名未来学家、当今世界最具影响力的社会思想家之一托夫勒在《第三次浪潮》中说过的内容如今已将逐渐成为事实,大数据正在改变这我们的生活。
IDC(国际数据公司)在2011年6月的数据统计[1],全球数据量在2011年已达到1.8ZB,在过去5年时间里数据量增加了5倍。
1.8ZB是什么样的概念?
1ZB等于1万亿GB,1.8ZB也就相当于18亿个1T的硬盘。
有效的对这些数据处理,去噪和提取信息,将数据转换成价值的技术已成为目前市场最为广阔的研究课题。
例如数据挖掘,分布式计算,机器学习等等新的信息技术的产生,他们目的都是为了能够从这无比巨大的数据中,获取能够用于商业决策和企业管理的信息[2]。
新浪微博于2009年正式上线,至2010年11月,新浪召开首届微博开发者大会时披露其微博用户突破5000万。
2011年3月,新浪CEO曹国伟在发布财报时介绍称,其微博的注册用户总数已超过1亿。
目前,新浪微博用户量已达到5亿。
因此,新浪微博的数据具有极大的开发潜力。
新浪微博数据平台是一个良好的数据载体。
除了足够大的数据量,相比与腾讯QQ空间,百度贴吧等,新浪微博还具有其他一些优点,如:
1)具有一定的实名制,一些社会名人的加入提高了微博的影响力。
2)可追寻的关系链。
3)具有极快速的传播能力。
因此,我选择了新浪微博作为爬虫进行用户分析的数据载体。
1.2系统开发工具
1.2.1vs2008
1.2.2oracle11g
1.2.3boost库
Boost库是一个可移植、提供源代码的C++库,作为标准库的后备,是C++标准化进程的发动机之一。
Boost库有些内容有望成为下一代C++标准库内容。
甚至替代现在的STL库。
boost库在多线程处理上具有更多的优势,可以在linux和window系统中使用而不用修改代码,除了强大的可移植性,boost在运行中也具有极大的稳定性,因为加入了智能指针的概念,提高了开发效率。
[3]
1.2.4GZIP压缩算法函数库
从新浪接口获取的数据数经过gzip压缩加密的数据,进行解压后即可获得json文件格式的数据。
GZIP最早由Jean-loupGailly和MarkAdler创建,最初用于UNIX系统的文件压缩。
而现今它已经成为Internet上使用非常普遍的一种数据压缩格式,或者说一种文件格式,可以很好的对数据进行压缩。
GZIP编码是可以很好的提高WEB应用程序的性能。
大流量的WEB站点常常使用GZIP压缩技术来让用户感受更快的速度。
当访问服务器中的网站时,服务器将网页内容压缩在进行传输,一般对纯文本内容可压缩到原大小的40%.[4]
1.2.5JSON格式文件转换函数库
因为新浪微博的数据接口格式为json。
为了获取微博数据,必须从JSON数据里面提取需要的信息。
JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。
JSON采用完全独立于语言的文本格式,JSON是一种理想的数据交换语言。
易于人阅读和编写,同时也易于机器解析和生成。
[5]
2系统需求分析与设计
2.1系统需求
2.1.1名词说明
1)微博用户信息:
指的是新浪微博的用户的ID、粉丝数、关注数、注册时间等信息、
2)微博信息:
指的是微博用户发布的微博的ID、内容、发布时间,评论数,转发数等信息。
3)用户:
指的是使用本系统的用户。
2.1.2系统功能需求说明
微博开放平台是一个基于新浪微博客系统的开放的信息订阅、分享与交流平台。
微博开放平台提供了海量的微博信息、粉丝关系、以及随时随地发生的信息裂变式传播渠道。
系统分成三个部分:
数据爬虫,服务器端,客户端。
(1)数据爬虫通过调用微博开放平台的接口,获取微博用户及其相应的信息,进行分析后存入数据库。
(2)服务器部分接收客户端的请求,从服务器数据库或新浪平台获取数据后返回相应的数据给客户端。
(3)客户端用于数据的展示。
1)微博数据爬虫部分:
为了实现数据爬虫的功能,需要解决的问题是数据的获取,这就需要了解相关的基本的网络知识。
理解了数据传输的原理,并利用现有的开源函数库,就可以完成数据获取函数的编写。
其中,主要要处理的问题有:
(1)实现HTTP请求报文的生成
(2)实现HTTP返回报文的接收和解压
(3)实现对解压后的json文件进行分析和信息提取,如果需要入库,存入入库队列。
2)微博数据爬虫基本需求:
(1)数据信息初始化:
读取数据库中已有的信息,存入微博用户缓存队列。
为爬虫系统的运行做好准备。
(2)微博用户发现:
自动爬取获取新的微博用户信息,如果发现新的微博用户ID,则将该用户信息存入。
(3)微博信息爬取:
从微博用户队列中获取微博用户ID,然后进行微博爬取。
(4)微博用户信息更新模块:
对数据库中的微博用户信息中的微博数,关注数,粉丝数进行更新。
(5)关注列表信息更新:
定期的对关注列表的微博数,总评论数,总转发数等数据。
(6)微博用户信息入库。
将等待入库的数据容器里的数据存入数据库。
(7)微博信息入库。
将等待入库的数据容器里的数据存入数据库。
(8)微博用户标签入库。
将等待入库的数据容器里的数据存入数据库。
(9)数据更新。
当数据库已存在的该数据是,对数据进行更新。
2)服务器部分:
(1)命令接收及处理:
接收客户的请求,并从数据库和微博平台中获取信息并返回给客户端。
新增的关注微博用户的微博爬取:
(2)当客户端新增了微博用户的关注时,进行数据爬取。
微博信息入库。
3)客户端部分:
(1)登录模块:
(2)新用户注册模块:
(3)通过邮箱获取注册验证码进行注册。
(3)忘记密码模块:
(4)向注册邮箱发送用户名和密码。
(5)用户关注的微博用户列表查询。
(6)获取关注列表的详细信息。
(7)查询数据库中的用户标签分类后产生的数据:
(8)通过标签类别和拟合度两个参数向服务器请求信息。
(9)微博用户模糊联想搜索:
(10)通过微博平台的联想搜索接口查询数据。
(11)发布微博并对列表框的微博账号进行@。
2.1.3系统总体功能设计
1)爬虫系统流程如图2-1所示:
图2-1爬虫系统流程图
2)接口调用处理流程如图2-2所示:
图2-2数据接口调用流程图
3)服务器流程如图3-3所示:
图2-3服务器流程图
4)客户端流程图如图2-4所示:
图2-4客户端流程图
2.2系统数据库构建
2.2.1数据库设计
系统采用oracle11g数据库。
数据库名称weibo。
数据库weibo包含5个表:
1)USER_TABLE,用于存储注册用户信息;
2)WEIBO_USER_FOCUS_LIST,用于存储用户的微博用户关注列表;
3)WEIBO_USER_INFO,用于存储微博用户信息;
4)WEIBO_WEIBO_INFO用于存储微博信息;
5)TABLEKEYS_INFO用于存储微博用户标签信息.
2.2.2数据库详细设计
1)WEIBO_WEIBO_INFO表主键为ID字段,USERID字段为外键,并为ID字段,USERID