跨社交媒体数据演化分析_第1页
跨社交媒体数据演化分析_第2页
跨社交媒体数据演化分析_第3页
跨社交媒体数据演化分析_第4页
跨社交媒体数据演化分析_第5页
已阅读5页,还剩78页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单位代码.

学号一

分类号_

跨社交媒体数据演化分析

院(系)名称_____________________________

专业名称

学生姓名

指导教师_____________________________

年月

第I页

设计任务书

I、毕业设计(论文)题目:

跨社交媒体信息演化分析

II、毕业设计(论文)使用的原始资料(数据)及设计技术要求:

1.在论文的实验部分,使用两个原始数据集是分别是:网易新闻报道

数据和天涯论坛帖子数据。

2论文要求实现的系统能对跨社交媒体间信息通过相似度比较进行关

联分析,同时结合时间信息能直观反映事件信息演化过程。

IIL毕业设计(论文)工作内容:

1.学习网络爬虫、数据存储及索引和关键词提取方面的相关知识。

2研究跨社交媒体间信息关联与演化分析的相关方法。

3.设计跨社交媒体信息演化分析系统,并设计实现数据采集、数据分

析子系统。

4.使用Java结合已有工具和方法,实现跨社交媒体信息演化图形化演

示系统。

第II页

IV、主要参考资料:

11]NewmanME.ModularityandcommunitystructureinnetworksNJ].

ProceedingsoftheNationalAcademyofSciencesoftheUnitedStatesof

America,2006,103(23):8577-8582.

⑵NewmanME,GirvanM.Findingandevaluatingcommunitystructure

innetworks^].PhysicalReviewE,2004,69⑵:292-313.

⑶ShahabiC,KimSH,NoceraL,etal.Janus-MultiSourceEvent

DetectionandCollectionSystemforEffectiveSurveillanceofCriminal

ActivityfJ].JournalofInformationProcessingSystems,2014,10⑴:1-22.

[4]MatsuoY,IshizukaM.KeywordExtractionFromASingleDocument

UsingWordCo-OccurrenceStatisticalInformationULInternationalJournalon

ArtificialIntelligenceTools,2003,13⑴.

[5]王巍.基于关键词和时间点的网络话题演化分析「DI.复旦大学,

2009.

学院(系)专业类班

学生__________________

设计(论文)时间:年月—日至年月—日

答辩时间:年月日

成绩:_________________

指导教师:

第III页

兼职教师或答疑教师(并指出所负责部分):

系(教研室)主任(签字):

第IV页

跨社交媒体信息演化分析

摘要

随着互联网技术的不断发展,众多的社交媒体网站或服务大大的丰富了人们的日常

生活,用户可以在不同的社交媒体中创作发布或者传播分享各式各样的信息,不同的社

交媒体平台下信息的传播方式和内容都存在差异,但这并不意味着信息在不同社交媒体

间是孤立的,恰恰相反,信息在跨社交媒体间是相互关联,相互影响的。

目前针对单源社交媒体的数据挖掘备受研究者关注,但是针对跨社交媒体间的信息

关联和演化研究却不多,在这种背景下,对跨平台的数据特征进行分析显得十分重要,

这将有利于我们发现更加清楚的了解事件的发展演变过程,更全面的掌握事件发展趋势

和规律。本次毕业设计的目标是设计一个跨社交媒体信息演化分析系统,集跨平台数

据采集、跨平台信息演化分析和分析结果展示为一体,揭示在不同社交媒体间,信息的

关联和演化情况。

本文完成的主要工作有:(1)学习网络爬虫、数据存储及索引和关键词提取方面的相

关知识。(2)研究跨社交媒体间信息关联与演化分析的相关方法。(3)设计跨社交媒体

信息演化分析系统,并设计实现数据采集、数据分析子系统。(4)使用Java结合已有

工具和方法,实现跨社交媒体信息演化图形化演示系统。

关键词:信息演化,跨平台,社交媒体,关联分析

第V页

AnalysisofTheEvolutionofMulti-SourceData

Abstract

WiththecontinuousandrapiddevelopmentofInternettechnology,numeroussocial

mediasitesandservicesenrichedpeople'sdailylifegreatly,thesocialnetworkusercan

generateorshareallkindsofinformationamongdifferentsites.Thecontentandmodesof

informationtransmissionaredifferentbetweenplatforms,butthisdoesnotmeanthat

informationindifferentsocialmediaplatformsisisolated,onthecontrary,itisinterrelated

andhasinfluenceeachother.

Atthepresenttime,thedataminingofsinglesourcesocialmediadatahasattracteda

greatdealofattention,buttheresearchonassociationandevolutionofmulti-sourcedatais

notmuch.Inthiscontext,toanalysisthecharacteristicsofmulti-sourcedataisveryimportant,

whichwillhelpustoknowthedevelopmentandevolutionofaneventmoreclearly,andgeta

morecomprehensivegraspofthetrendsandpatterns.Thegoalofthispaperistodesigna

systemthatcananalyzetheevolutionofmulti-sourcedata,integratesmulti-platformdata

acquisition,multi-platforminformationevolutionanalysisandtheresultsshowasawhole,

andthenrevealthecorrelationandevolutioninthedifferentsocialmediainformation.

Themainworkofthispaperinclude:1)Learnaboutwebcrawler,datastorageand

indexingtechnology,andkeywordextraction.2)Learnaboutthemethodofanalysisonthe

associationandevolutioninmulti-sourcedata.3)Designasystemtoanalysistheevolutionof

multi-sourcedata,andimplementthesubsystemofdataacquisitionandanalysis.4)UseJava

tocombineexistingtoolsandmethodstorealizethegraphicaldemonstrationsystemof

analysistheevolutionofmulti-sourcedata.

Keywords:informationevolution,multi-platform,socialmedia,associationanalysis

第VI页

目录

1绪论1

1.1研究背景1

1.2国内外研究现状2

1.2.1针对单社交媒体平台的信息演化分析2

1.2.2基于共同用户多源数据关联演化分析方法2

1.3研究内容与意义3

1.4论文组织结构4

2数据采集与存储技术的研究6

2.1利用官方API获取数据6

2.1.1OAuthl.Oa验证7

2.1.2SDK开发包的使用9

2.2利用网络爬虫WebCrawler获取数据10

2.2.1网络爬虫webCrawler10

2.2.2Webmaic爬虫框架12

2.3数据库存储与索引介绍15

2.3.1Mysql数据库15

2.3.2Mybatis框架15

2.3.3Solr索引16

3数据采集与存储子系统的设计与实现17

3.1系统需求分析17

3.2数据库设计17

3.3数据采集与存储子系统设计18

3.4数据采集与存储子系统的实现19

3.4.1数据采集模块的实现19

3.4.2数据持久化实现21

3.4.3数据库索引建立22

4跨社交媒体信息演化分析系统的设计与实现26

4.1关键词提取技术分析26

第VII页

4.1.1中文分词26

4.1.2TFIDF算法及其改进27

4.2关键词提取实现28

4.3信息关联分析模块的设计29

4.4信息演化分析与展示模块的设计与实现31

5系统)则试与名吉果展ZF32

5.1数据采集与存储32

5.2索引建立与更新33

5.3关键词自动提取34

5.4搜索界面结果35

5.5系统改进分析37

总结39

致谢40

参考文献41

第1页

1绪论

绪论部分主要介绍本文课题研究的现实背景,以及国内外相关研究与技术的现状,

接着将对本论文的主要研究内容、意义与相关创新点进行总结,最后将梳理全文的框架

思路以及组织结构。

1.1研究背景

伴随着计算机互联网网络技术的迅猛发展,尤其Web2.0技术及概念的壮大,互联网

上出现了大量由互联网用户自身主导生成内容的互联网产品、以互联网用户对象为中心

的互动型社区,这类网站或者服务通常同时具有社交平台性以及媒体传播性,其中为我

们熟知的包括新浪微博、天涯论坛、豆瓣知乎以及各类如新闻评论站点如网易新闻腾讯

新闻等。在这一类社交媒体中,每个用户都是信息的制作者、发布者、分享者和传播者,

进而产生大量数据,这些数据不仅包含与每个人日常生活相关的记录信息,还有如针对

社会热点、区域事件的大量观点和讨论,而正是这样多种形式、多种类型、多种传播途

径的数据,使得我们的生活由“信息时代”向所谓的“大数据时代”跃进。

在大量复杂多样的数据中,值得人们关注的一点是:信息在不同社交媒体平台下会

体现出不同形态及演化规律,并且在不同时间段不同背景时期也会有不同反映,即使是

针对同一事件,不同平台下所聚合的数据所展现的信息都会不同,例如,前段时间爆出

的新闻热点事件“庆安火车站民警击毙一名阻止其他乘客进站并涉嫌暴力袭警的男子”,

新闻网站的报道多基于现有事实,和相关调查的结果,而天涯论坛上反映出来的热点在

各方网民对这一事件的个人观点与讨论,比如讨论男子上访者身份、分析警察开枪是否

合法等;但这些差异性并不意味着在不同社交媒体平台下的信息是孤立产生存在并发展

的,恰恰相反,信息间是相对独立、相互关联传播并协同演化的。

然而在传统研究中,往往只针对单一信息源的数据进行分析,没有能够整合多源数

据进行关联对比研究,也就不能够更好的揭示信息演变过程,不能更好的利用信息价值;

而如果我们将这些跨社交媒体平台的数据综合起来进行分析,将能够更真实更完整地表

现事件发展过程,也就能更全面地表达人们对于该事件的认知,更好地贴近并服务于我

们的生活;对社交媒体多源现象进行研究,理解并分析社交媒体下的多源数据,是挖掘

社交媒体时代下大数据价值的重要步骤;研究跨媒体下的信息演化和关联情况对于发现

第2页

网络新规律、更全面地利用社交媒体数据、分析和设计复杂社交媒体应用等具有重要意

义。

本文的工作在上述基础上展开,基于跨媒体平台多源数据信息关联和演化分析的现

实需求,主要实现了一个针对多源数据的关联与演化分析展示系统,其中包括对天涯论

坛以及新闻门户站点间跨社交媒体平台数据的采集和存储、索引建立过程,通过提取数

据文本关键词的方法对跨平台数据进行关联演化分析,并最终利用网页实现进行演化检

索展示。

1.2国内外研究现状

在国内外现有技术和相关研究中,并没有一种完全成熟的针对跨社交媒体信息演化

分析方法,目前主流的研究方向仍是针对单一社交平台的分析,如针对微博或Twitter

的话题发现与跟踪研究;而在跨社交媒体方面也有研究者针对该问题提出了一些解决方

案,例如利用跨社交媒体共同用户来进行事件关联分析。下面分别针对这两种与本文相

关的研究方向进行简单介绍:

1.2.1针对单社交媒体平台的信息演化分析

针对单社交媒体平台的话题发现和跟踪TDT研究是目前较为热门较为成熟的研究方

向,这种研究的研究与数据挖掘等方向有许多相似点,同时也有众多应用方向。它主要

是针对某一个事件进行相关研究,针对围绕该事件产生的话题进行分析,例如对不同话

题间的关联分析,进而实现对新话题的检测发现,以及对话题的跟踪。

该研究的主要方法是,先使用话题关键词对话题建模,然后对不同话题进行相似度

计算,根据结果进行聚类或分类。这类研究在单一平台下能够取得较好的效果,但并没

有针对复杂的跨社交媒体平台信息进行扩展,因此应用范围较为有限,但其本身的思路

可以被借鉴到对多源数据的处理中来

1.2.2基于共同用户多源数据关联演化分析方法

现有的一种对于跨社交媒体信息进行分析的方法是,利用同时使用不同社交媒体的

用户群来实现对事件数据的检测分析。该方法基于这样一种设想:即同一个用户在不同

社交平台下关注的内容是类似的相关的,这样就将同一个用户在不同平台间的产生的信

息进行分析,更容易找到这些数据的关联性,进而对跨社交媒体的信息进行演化分析。

第3页

该方式提出了一种新的关联模式,但要求必须要有大量的共同用户以及他们所产生

的数据信息来作为对模型进行优化和上层监督,在现实环境中,往往不能进行大规模的

实现应用,因此这种方法也还需要结合其他方法来提高效率。

L3研究内容与意义

本文主要研究内容是对跨社交媒体信息的演化分析,其中包括的工作有:数据采集

与存储,单社交媒体事件关键词分析,多源跨社交媒体事件关联和演化分析,并最终实

现一个检索展示系统。研究设计思路和总体系统方案如图1.1:

跨社交媒体信息演化分析系统

结果展示模块

数据采集与存储子系统

数据采集模块数据存储模块数据索引模块

I___7\__________________/IJ

图I」跨社交媒体信息演化分析系统总框架

本文研究所采用的底层数据来源是天涯论坛和网易新闻。现假设已取得大量上述两

个平台的跨社交媒体数据,下面通过一个简单的例子来介绍分析本文研究内容。

当用户关注到一个新闻事件时,想要了解该事件从哪个平台最先曝光,在哪个平台

成为热点,其间各平台用户对此事件的综合反应是如何的,事件信息在平台之间是如何

流动演化的,其中的关键也就是要找到不同平台间有关于同一事件的所有数据,并结合

时间信息对文本内容进行分析。其中的一个难点就在于确定一篇帖子或一篇新闻描述的

为同一话题或对应的事件。本文研究采用提取话题关键词的方法来对事件建模,而由于

新闻内容具有真实性、时效性,文本结构格式较为统一和严格,新闻标题具有简明性、

概括性,文中选取新闻报道作为关键词提取的主要依据;

第4页

依旧以新闻事件“庆安火车站民警李乐斌击毙袭警男子徐纯合”为例,新闻报道往

往包含两个或多个关键词例如“庆安”、“李乐斌”或“徐纯合”,而在天涯论坛讨论中

往往只针对一个关键词进行讨论,如“李乐斌恶意杀人”或“徐纯合袭警监控视频”,

如果用户只搜索关键词“庆安”就不能搜索到其实属于同一事件的这些帖子,所以本文

采取的方案是,针对新闻报道做关键词提取,再利用已产生的关键词集去查找更多之相

关的帖子。

为了方便用户搜索查找,需要对已经过关键词提取的文本内容建立索引,方便搜索

查找,最终达到的效果是,当用户搜索某个事件的相关关键词时,能找到跨媒体平台中

一定时间范围内的所有同话题或事件数据,并依照时间顺序,展示相关内容,揭示事件

发展脉络。

本论文设计的创新点在于,借鉴单数据源下信息关联演化分析方法,提出了跨社交

媒体事件信息的演化分析方法并简单实现。

1.4论文组织结构

第一章绪论

该部分主要介绍本文相关研究与技术背景以及国内外相关研究现状,分析跨社交媒

体信息关联与演化的意义,并介绍论文主要工作和创新点。

第二章数据采集与存储技术的研究

该部分主要介绍与数据采集和存储子系统相关的背景知识,主要包括对数据的采集

方法、数据存储和索引相关工具的概述。

第三章数据采集与存储子系统的设计与实现

该部分主要介绍了系统最底层的数据采集和存储子系统的设计与实现,包括对该子

系统的需求分析,并按照需求进行设计,最终展示实现及优化过程。

第四章跨社交媒体信息演化分析系统设计与实现

该部分主要介绍跨社交媒体信息演化分析系统的相关背景与设计实现方法,包括对

用于信息关联分析的关键词提取方法的介绍,基于信息关联分析的演化分析与展示模块

的设计与实现过程。

第五章系统测试与成果展示

该部分主要按照系统设计层级与各模块功能,分别对数据采集与存储、索引建立与

第5页

更新、关键词提取与关联分析以及最终的信息演化分析结果进行了贴图展示并加以文字

介绍分析,最后指出在系统实现过程中的缺点与改进建议。

第6页

2数据采集与存储技术的研究

本章主要介绍与论文研究内容数据采集和存储相关的一些背景知识;系统的实现建

立在大量多源数据的基础上,先介绍目前主流的社交媒体数据获取方法一一利用官方

API简单提取所需数据,然后结合项目本身特点和实际操作限制,介绍另一种更通用的

也即本文所使用的采集方法一一利用网络爬虫WebCrawler获取实验所需数据的方法,

并介绍相关背景知识。

在已利用爬虫取得数据的情况下,还需将数据持久化到本地计算机;为了更好的分

析数据,需要一个强大的数据库支持,并根据多源社交媒体数据的特点对数据库进行设

计,并建立索引以方便搜索和查找,本章将对这两种技术相关的一些背景知识进行解释。

2.1利用官方API获取数据

API(ApplicationProgrammingInterface,应用程序接口)是服务提供商方便应用程

序开发者接入服务而预设的一套函数接口,开发者只需要按照标准进行验证并调用官方

的API,访问接口就可以向服务器请求所需的数据或提交数据;通过API,开发者将不

必去了解系统或服务的内部工作细节,这将大大简化开发者的工作。

随着互联网服务的不断进步,基于互联网的应用也越来越受关注,一些站点开放自

己的部分资源,并允许开发人员利用这些资源来生产新的更好的更富有创意的服务或应

用,这样不仅方便开发者使用更多资源进行更多元、更深层次的研究或开发工作,进而

为用户提供更丰富的选择和更完善的体验效果,同时也会反过来帮助站点改进和推广自

己的产品,从而实现三方互赢,促进平台健康高效发展。目前国内的主流社交网站如新

浪微博、天涯论坛,国外的Facebook、Twitter等都有自己的开放平台,并且提供了相对

简单易用、功能完善的API接口,允许开发者利用这些接口获取资源并开发自己的应用,

而在官方提供的API文档中,提供了相关接口说明、请求方式(GET/POST)、请求地址、

请求参数及返回结果等必要信息,使开发者能够快速了解API的相关基本功能。但同时

为了保证用户信息安全以及规范应用开发,网站也要对应用进行验证,如当用户授权给

第三方应用时,第三方应用不应当知道用户的账号密码信息,但又必须要完成授权获取

相应的数据,这就需要通过OAuth认证来解决帐户安全性问题。下面以天涯社区开放平

台所采用的OAuthl.Oa版本为例,介绍OAuth认证相关技术。

第7页

2.1.1OAuthl.Oa验证

简单而言,OAuth认证的思路是:首先开发者应用向OAuth服务提供商(也即开放

平台)请求一块尚未经过任何用户授权的请求令牌,得到请求令牌后应用就能够像用户

请求授权,而在用户登录并同意授权之后,OAuth服务提供商将请求令牌换取资源访问

令牌,这之后应用便能访问或修改应用使用者的受保护资源。在整个OAuth认证过程中,

开发者或第三方应用都无法接触到授权用户的帐号信息,授权结束后的数据通信也不包

含用户帐号信息,而是以数字签名和访问令牌(AccessToken)代替,即使被劫包分析

流量数据也无法破解出用户账号和密码等登录信息。

为了方便管理和提升安全性,对于开发者注册的每一个的应用,开放平台都会分配

予一个专属的OAuthConsumerKey和OAuthConsumerSecret,类似于公钥加密系统中

的公钥和私钥,前者作为该App的标识,在应用向开放平台发送的每一次请求中都必

须带上这个参数,以告诉平台是谁在请求资源,而后者是开放平台为该应用分配的用以

进行机密数据交换的密钥,主要用来进行数字签名。

OAuthl.Oa认证的基本步骤如图2.1o

1.获取尚未授权的RequestToken

首先开发者需要先将http方法名(GET/POST)、开放平台指定的RequestToken请求

地址RequestTokenURL,以及包含了应用OAuthConsumerKey在内的其他请求参数三

部分用字符拼接起来,然后通过URLEncode编码组成一条基础串BaseString用

以向开放平台申请未经授权的请求令牌RequestToke,同时考虑到安全性,要求所有的

OAuth请求生成的BaseString都须使用SHA-1算法来对其生成签名,开发者向OAuth

认证服务提供商提交请求后,OAuth认证服务提供商同意该请求后返回给开发者应用

OAuthToken和与之对应的OAuthTokenSecret(也即尚未经用户授权的RequestToken

和与之相对应的RequestTokenSecret),如果请求不成功,那么可以返回开发者指定的

某一个Callback回调网页。

2.请求用户授权的RequestToken

在这一步,开发者需要以上一次开放平台返回的未经授权的RequestToken作为参数,

以GET或POST的方式访问开放平台指定的用户授权地址UserAuthorizationURL,向

用户发起授权请求,这一步要求用户登录以完成相关授权动作,如果用户同意授权,那

么返回用户授权后的OAuthToken(与未授权的RequestToken值是相同的)和OAuth

第8页

Verifier授权验证码(也即RequestTokenSecret),并执行跳转操作完成授权,如果用户

拒绝授权,则返回开发者指定的Callback回调网页。

3.使用授权后的RequestToken换取AccessToken

在取得用户授权之后,开发者需要向AccessTokenURL发出请求以换取AccessToken

取得资源访问权限,这一步需要以上一步返回的RequestToken和RequestTokenSecret

等作为参数,并且添加上随机产生的唯一的32位字符串以防止重放攻击,最后以Request

TokenSecret和OAuthConsumerKey作为私钥,对生成的BaseString进行SHA-1签名

并在请求中添加上签名信息进行请求;开放平台服务器响应后,向开发者返回OAuth

Token(即具有访问权限的Accesstoken)和OAuthTokenSecretC即Accesstoken的密钥)。

第9页

图2.1OAuth1.0a认证基本步骤

在获取到AccessToken之后,应用便可以凭借该访问授权访问或修改当前用户授权

的资源,例如查看用户公共信息,或者调用开放平台提供的其他API来执行相关操作,

例如以应用OAuthConsumerKey、授权成功后并换取回的OAuthToken和OAuthToken

Secret等为请求参数,调用论坛发布帖子的API来发表新的帖子。

2.1.2SDK开发包的使用

在实际使用过程中,已有开源的OAuth实现,开发者可以将开源项目导入自己的工

程,修改关键字段以完成验证,省去了自己了解OAuth实现细节并手工编写验证代码的

第10页

麻烦,但这仍旧要求开发者研究API的具体实现,甚至修改相应代码以实现想要的功能,

所以在实际开发过程中,开放平台一般也会提供给开发者由多种语言实现的SDK

(SoftwareDevelopmentKit)软件开发工具包,以淡化OAuth认证的实现和API接口调

用细节等,下载官方的SDK,将所需的支持类导入到自己的工程中,修改相关配置如应

用的OAuthConsumerKey,参考其中的API文档、注释和使用样例,调用相关API接

口并进行测试就可以了。

2.2利用网络爬虫WebCrawler获取数据

在实际开发过程中,由于开放平台的限制,或者API接口的不完善,一些数据无法

通过调用官方接口直接获得,例如通过天涯社区开放平台API获取帖子的具体内容(包

括回复内容)时会限制返回数据的在140字以内,这显然无法满足正常的数据获取需求。

所以下面介绍另一种更自由的通过网络爬虫获取网页数据的方法。

2.2.1网络爬虫webCrawler

网络爬虫WebCrawler,又称网络蜘蛛WebSpider>网络机器人WebRobot,是一

个能够按照一定的规则和逻辑对大量分散网页进行批量下载的程序或系统,网络爬虫被

用于许多场景,其中最重要也最常见的则是作为网络搜索引擎的关键组成部分,能对大

量的网页进行定期收集和归档;同时,网络爬虫也被用于网络数据挖掘,对网页的统计

特性进行分析、或者对网页数据进行分析。网络爬虫像是一个用来自动收集网页信息的

机器人,其工作原理可理解为:将整个网络看作一个有向图,而将每一个个网页看做有

向图上的一个个节点,将网页间的相互链接关系看有向图的边;而爬虫的基本工作流程

就是根据图中的有向边(即URL超链接),先从一堆称为种子Seeds的URL列表开始,

当访问这些网页时,将网页中所有的超链接添加到待访问抓取的URL列表中,然后不

断从待抓取队列中取出URL并将对应网页下载下来,并将该URL存入已抓取URL队

列中,同时分析已抓取URL页面,将其中的其他超链接加入待抓取URL队列,从而进

入下一个循环直至所有符合规则的URL被抓取。

第11页

从待抓取URL队

列中读取URL并

首先将种子加

URL对相应页面进行

入待抓取URL队列下载

由于一个网页往往带有许多超链接,这意味着爬虫需要爬取的网页数量太多,而一

个爬虫在一段时间之类只能下载有限数量的网页,所以需要对爬虫的爬取行为做出规则

上的限定和策略上的优化。目前常见的网络爬虫策略主要有三类:

1)深度优先的遍历策略

深度优先的遍历策略是指某个指定的起始URL开始,一个URL接着一个URL跟踪

爬取,当处理完这条URL链之后才转入下一个新的起始URL,对下一条URL链进行顺

序爬取;这种策略比较简单,我们可以直接通过栈来实现对待爬取URL的存储,但当

某条URL链过于长时,可能导致爬虫落入陷阱,无法爬取其他URL链,并且一般距离

种子URL较远的页面网页价值相对较低,所以该策略抓取效率并不理想。

2)广度优先的遍历策略

广度优先的遍历策略基本思路是按照待爬取URL的层次进行顺序爬取,也即要将已

爬取的网页中发现的新的URL加入待爬取URL队列的末尾,这样爬虫会优先爬取指定

的起始URL,然后爬取起始页面中的所有第二层次的超链接URL,最后再选择一个链

接网页继续抓去在该网页中超链接的所有网页。这种策略的设计和实现也比较简单,我

第12页

们可以通过一个队列并按序插入取出即可,在一定程度上,具有较短链接跳转距离的页

面与初始URL页面具有主题相似性,这符合一般期望所以在实际应用中,爬虫往往默

认以广度优先策略进行爬取操作。

3)最佳优先的遍历策略

相较于深度优先和广度优先策略,最佳优先遍历策略更为定制化,也更加高效,在

爬取过程中,爬虫将按照一定预测分析算法衡量该网页的重要程度,例如主题相关性或

者URL相似度,然后选取算法预测的最优的一个或多个URL作为待爬取URL并进行

抓取。但是选择一个好的预测算法有一个附加的难点:算法只是结合部分信息做局部最

优化遍历,在爬取过程中完整的网页爬取集是并不知道的,这也就可能发生部分重要网

页被算法漏判优导致无法被抓取的情况,所以我们还需结合实际使用需求,来改进最佳

优先策略。

除上述常用遍历策略外,其他大型爬虫(如谷歌、百度)的遍历算法往往更智能更

强大,例如谷歌提出的PageRank算法,其基础框架是通过计算连接到一个网络页面的

链接质量和数量对网站进行粗略的重要性衡量,具体来看就是将从A页面导向B页面

的链接看作A对B进行投票,然后根据投票来源页面A和被投票目标页面B的等级来

决定B页面新的等级,通过不断调整的动态评级方法,可以保证爬虫的效率和质量。

2.2.2Webmaic爬虫木匡架

Webmagic是一个简单灵活的支持扩展的开源JAVA爬虫框架,目的是使网络爬虫的

开发流程简单化、定制化,使开发者能快速开发出一个高效易维护的网络爬虫,从而节

省精力更专注于其他逻辑功能的开发,其核心构造相对简单,但涵盖了爬虫的整个生命

周期和全部功能:下载,URL管理,内容解析、提取和持久化;Webmagic主要具有以

下特性:

1)核心简单但功能齐全,方便没有相关爬虫开发经验初学者上手。

2)完全模块化的设计,具有强大的可扩展性。

3)提供灵活丰富但简明易懂的页面抽取API。

4)支持多线程和分布式,方便建立大规模数据采集集群。

5)支持多种类型的页面爬取,且无需依赖框架灵活集成入项目。

具体来看,Webmagic项目主要包括核心和扩展两个部分:核心部分(webmagic-core)

第13页

是一个经过精简和模块化处理的爬虫实现,只包含爬虫基本模块和基本的采集器;而扩

展部分(webmagic-extension)则提供一些更方便开发和使用的工具,如注解格式定义爬

虫、JSON支持等。核心部分出于简单性和高扩展性考虑,只由四个基本组件Downloader、

PageProcessor、Scheduler、Pipeline构成,再将组件进行结合并完成多线程任务,也正

因为此,开发者可以针对实际需求对爬虫功能进行定制;而扩展部分则提供了许多可以

方便开发的实用功能,开发者可以根据项目需求选择性使用,这同样可以使得爬虫的开

发变得简单高效。

要实现一个简单的网络爬虫,只需导入webmagic-core包和其他相关依赖便可实现。

在webmagic-core结构中,Downloader>PageProcessor、Scheduler、Pipeline四个组件分

别对应爬虫生命周期中的页面下载、页面处理、URL管理和数据持久化等功能,并由

Spider统一组织管理,让它们彼此间可以进行交互并按照一定流程执行爬取任务。

webmagic-core的框架结构如图2.3所示:

图2.3Webmagic爬虫核心框架示意

1)Downloader

第14页

Downloader下载组件负责对互联网上的指定页面进行下载,以便进行后续数据处理。

在WebMagic中默认使用ApacheHttpClient作为下载工具,这也是一般网络爬虫向网络

服务器请求资源的方式。

2)PageProcessor

PageProcessor负责解析页面并进行处理,抽取有用信息并按一定规则发现新的待爬

取链接。WebMagic使用Jsoup作为HTML文本解析工具,并基于Jsoup开发了扩展了

XPath语法的解析工具Xsoupo

注意由于每个项目需求不一,且不同页面间存在差异性,所以PageProcessor对于每

个站点、每个页面都不尽相同,需要开发者进行定制。

3)Scheduler

Scheduler用于管理待抓取的URL队列,以及处理一些URL去重工作。基于JAVA特

性,WebMagic默认使用JDK的内存队列来管理URL,并用集合来进行去重处理,经过

扩展后,开发者能够设置URL优先级,实现深度优先和广度优先的策略切换,并且可

以通过定Scheduler来实现特殊的分布式需求。

4)Pipeline

Pipeline负责对爬虫的数据抽取结果进行处理,包括计算和持久化到文件或数据库等。

其中默认提供“打印输出至控制台”和“保存至本地文件”两种结果保存方案,如果需

要保存至数据库,则需要定制相应的Pipeline,如结合Mybatis和Spring将数据持久化

到Mysql中;注意对于一类通用需求通常只编写一个Pipeline,而不用重复定制。

5)Spider

Spider是爬虫内部流程控制的核心,也是维护爬虫运转的引擎,爬虫的四个组件都

可以看作Spider的属性,通过自由设置这个属性的参数便可以按照业务需求实现不同定

制功能,作为WebMagic爬虫运作的入口,它封装了包括爬虫的创建、启动、终止以及

多线程在内的基本功能。

在实际开发过程中,使用WebMagic框架实现一个基本的爬虫只需要编写一个类,

再实现PageProcessor接口即可,而由Spider来负责创建和控制爬虫入口。这显然比我

们手工编写一个完整地爬虫来得简单,同时如果需要对爬虫进行按需定制,那么只需参

考webmagic的开发文档和源码对Pipeline、Scheduler或Downloader的实现进行选择修

改即可。

第15页

2.3数据库存储与索引介绍

2.3.1Mysql数据库

MySQL是世界上第二广泛使用的关系型数据库,也是使用量排名第一的开源数据库,

目前已被Oracle公司所收购;正因为其开源、免费(也提供功能更为强大的付费版)、

功能齐全并且性能卓越等特性,往往成为Web应用程序数据库的首选,一些中小型网

站甚至包括Google、Facebook等大型网站都采用了MySQL来存储数据。

MySQL是一种关联型数据库,即将数据存储与不同的表中,而非将所有数据不加区

分的放在一个大仓库中,这样可以增加系统的灵活性并提高响应速度;同时MySQL提

供最常用的标准SQL语言来对数据库进行访问和操作,官方也提供一个图形化管理工

具MySQLWorkbench以方便使用者进行一些简单的数据库操作。相较于Oracle和

SQLServer等大型数据库,MySQL存在诸多不足,但对于较小型项目,MySQL完全能

够胜任。

2.3.2Mybatis框架

MyBatis是一个优秀的基于Java的持久化框架,支持定制化SQL、存储过程以及各

类高级映射;Mybatis将Java方法和SQL语句相关联,而非直接将Java对象与数据库

表关联,这样能允许用户更加充分的利用数据库的各种功能和功能,例如存储过程、视

图、执行各类复杂的查询等。

传统的JDBC在处理数据库查询时,往往需要七个步骤:首先要加载JDBC驱动,

与数据库建立连接,然后生成JDBCStatements对象、配置SQL语句传入参数、执行再

将执行结果进行处理和返回,最后还呀对相关资源进行释放。而MyBatis针对JDBC复

杂和冗余的处理过程进行了优化,提供了更加简单直观的使用方法,只需要使用的XML

或是注解来进行相关配置和对数据库进行原始映射,从而避免了几乎所有的JDBC代码、

重复参数配置以及对结果集的检索配置。

要使用Mybatis,只需要在自己的工程中引入对应的依赖即可,每个基于Mybatis的

应用都需要使用一个Sql会话工厂SqlSessionFactory实例,具体使用中可以通过配置相

关XML文档然后使用Sql会话工厂产生器SqlSessionFactoryBuilder获得一个定制的

SqlSess沁nFactory实例,其中包括对传入参数映射定义配置、执行的SQL语句集配置以

及结果映射配置,甚至只需要参照官方文档指导修改相关参数即可完成对MyBatis系统

第16页

的核心设置。

2.3.3Solr索引

索引是针对数据库中数据的一个或多个属性值进行排序优化的一种结构,数据库的

索引相当于图书的目录,使用索引能够提高对数据中特定信息的访问速度。由于我们的

社交媒体数据存储于数据库中,为了方便利用关键词进行检索,有必要对数据库建立索

引。而Solr是一个基于Lucene的开源企业级全文搜索引擎,它提供了全文索引和搜索

功能,并且对外提供类似于网络服务的Http/XML或JSON的API;同时Solr提供强大

而简单的外部配置功能,使得开发者无需进行Java编码,数据通过Http/XML的方式进

行提交,查询结果也可以通过Http/XML的方式返回。

具体来看,Solr提供了标准的Http接口来实现对数据库索引文件的增删改查,用户

只需要在本地配置好与数据库连接和数据库各属性字段相关的XML文件,即可使用

HttpPOST方法进行配置提交,Solr将自动按设定对索引进行处理,而查询时,只需要

按照查询条件使用GET方法请求相应的地址,即能得到返回的数据;Solr运行于servlet

(如Tomcat或Jetty)容器中,提供了一个完善简明的网页管理界面,所以我们也可以

直接通过访问该界面进行图形化操作。

值得一提的是,Solr还提供了强大的扩展功能,例如我们可以结合中文分词工具来

实现在建立索引和搜索结果时的中文分词支持;并且Solr支持多核,即可以只使用一个

solr实例完成对于多个数据库表的索引,这正满足多源数据的区别存储单但统一搜索的

需要。

第17页

3数据采集与存储子系统的设计与实现

3.1系统需求分析

在整个系统中,系统采集与存储子系统是上层关联与演化分析系统进行数据分析的

基础,这部分需要采集和存储大量不同格式的数据,为了能够保证数据的采集和分析

的效率和性能,需要对数据采集部件和存储部件进行设计和结合,该子系统应当满足如

下需求:

1)能对多源数据进行针对性的大规模采集,针对不同平台的数据格式和文本内容特

点进行有效采集。

2)不同源的社交媒体数据格式之间存在一定差距,需要为每个平台设计不同的数据

库表单,同时为了方便后续分析,需要对数据库模型进行优化。

3)由于会有大量数据存入数据库,为了方便后续数据的读取、分析和搜索,需要对

数据库建立索引。

3.2数据库设计

1)网易新闻数据表设计

表3.1网易新闻数据表设计

字段名字段类型主键说明

Titlevarchar一存放新闻数据标题字段

Timedatetime—存放新闻产生时间

Contenttext—存放新闻报道正文

LinkVarchartrue存放新闻原文链接

KeywordsVarchar一用于存储该新闻的关键词

由于新闻数据格式相对统一和简单,所以设计表时也要尽量保证简洁,一张表用于

存放全部新闻信息即可,最后还需要添加一个keywords(关键词)字段以方便后续处理

中对新闻内容关键词提取之后的结果保存。具体设计如表3.1所示。

2)天涯论坛帖子数据表设计

第18页

图3.1天涯论坛数据库ER图

由于天涯论坛帖子的特殊格式,需要对一篇帖子的内容进行拆分,即分为主贴表

ZhutieDB和回帖表HuitieDBo两表之间的ER关系如图3.1所示。主贴是一篇帖子的开

始,需要附带更多关于帖子的特征信息,而一篇帖子往往带有大量回帖,不能设计得过

于复杂。因此设计主贴表包括10个属性:发帖人信息、贴子标题、发帖时间、主贴内

容、帖子当前阅读量、帖子当前回复量、帖子链接、帖子唯一标号、帖子关键词,而对

于回帖表,设计了5个字段,包括回帖人信息、回帖时间、回帖内容、回复所在楼层、

帖子唯一标号;其中帖子唯一标号textID在两张表中均作为主键存在,以避免帖子数据

的重复爬取。

3.3数据采集与存储子系统设计

根据上述子系统功能需求以及简明稳定的设计原则,对数据采集与存储子系统做整

体设计。

该部分子系统需从多源媒体数据爬虫平台下源源不断的取得数据,存入数据库中并

建立索引,并且能对数据库中已取得的数据进行更新同时更新索引;将子系统设计为三

个功能相对分离的部件有利于降低整个系统的复杂度,提升系统稳定性。具体设计方案

如图3.2,主要模块包括:采集模块、存储模块和索引模块。

第19页

如图,三部分之间工作相对独立但之间又相互关联,爬虫用于从两个不同平台的数

据源处不断取得符合期望的数据,并对同一平台的数据格式进行统一,数据库用于存储

从爬虫处取得的数据并对可能存在的冗余数据进行排除,索引部件用于对数据库的数据

建立或更新索引,同时提供搜索接口予以上层使用。总体来看,这三部分各司其职,又

相互协调共同为上层提供服务。

3.4数据采集与存储子系统的实现

3.4.1数据采集模块的实现

由于对于数据的后续处理主要是对文本内容的处理,所以数据采集部件采集数据时

主要应当保证文本信息的完整性(即不能漏抓某些信息字段)和有用性(即尽量避免信

息价值低的数据),而对于其他的如图片或视频等内容则采取丢弃策略;同时为了保证

数据的连续性,如针对同一篇帖子的所有楼层,尽管存在翻页等情况,但在采集时需要

尽量保证数据不会被冲散,这样可以提高后续数据处理的效率。出于对平台之间本身的

差异性、以及多源数据间的差异性考虑,我们采用网络爬虫的方式来对数据进行采集,

因为通用网络爬虫可以以几乎相同的框架对不同的站点进行爬取,这将大大减少我们的

工作量。

本模块的实现基于Webmagic框架,对于网易新闻和天涯论坛,其网页展示形式是类

似的,都采用了列表页和详情页的方式来展示数据,但天涯论坛的详情页面会存在继续

第20页

翻页的情况,这也是两个平台爬虫之间最大的区别,需要对爬虫针对不同的社交平台进

行了调整优化。

分别设置爬虫的种子URL为新闻站点的首页和论坛版块首页,图3.3所示流程图以

更为复杂的天涯爬虫为例,解释了添加待爬取URL的方式:

图3.3抓取天涯论坛待爬取URL链接的流程图

另外对于待爬取的URL需要进行筛选,以论坛帖子URL为例,在一篇贴子的页面

中可能出现许多其他无关链接,如有关于用户主页链接和广告推荐链接,这些都是系统

实现中的干扰数据,为了提高采集效率,应当对待抓取URL的位置和格式进行限制。

本系统中采用了正则表达式和xpath来进行实现该功能。

一个正则表达式RegularExpression是可以定义一种搜索匹配模式的字符序列,主要

用于对字符串的匹配;简单而言,正则表达式允许用户通过一些字符量词的简单组合来

定义或者构建一种匹配模式,然后将这种匹配模式与想要进行匹配的文本信息中的字符

串进行对比,并根据提交的字符串能否匹配成功而进行相关操作。本系统中最正则表达

第21页

式的利用主要在于对URL形式进行指定,以天涯论坛杂谈板块为例,任意一篇贴子的

URL格式为'/post-free-{帖了-编号}-{帖子页号}.shtml',那么使用正

则表达式'http://bbs\.tianya\.cn/post-free-\d+-\d+\.shtml'即可对类似的帖子URL进行匹

配,匹配成功方可添加进待URL抓取队列;另外还有对于一些数据的格式进行调整,

仍然以天涯论坛为例,采集到的时间数据原始格式为“时间:2015-05-1617:40:00",而

正确得到的数据中并不包含中文字样而直接是一个“年-月-日时-分-秒”标准时间格式,

所以需要采取正则表达式“\d{4}-\d{2}-\d{2}表{2}:\d{2}:\d{2}”过滤掉中文。

XPath是一种用于在XML或HTML文档中查找信息的语言,它将一个HTML文档

视作一种节点树,然后基于这种树状结构采用路径表达式的方式来文档中某个节点的路

径进行描述、查找和定位,一个路径表达式包括:一个轴,用于定义所选节点与当前路

径下的节点在文档树中的关系;一个节点测试用于识别轴内部的节点,如元素节点、属

性节点和文本节点等,其中既可以包含特定的节点名也可以是更一般的表达式;零个或

多个允许任意深度的嵌套的谓词,一个谓词是一个以用来更加严格的筛选已选定的节点

集写在方括号中的表达式,只有那些满足表达式条件的节点才会被选取。在本系统中,

对于Xpath的使用主要在于两个方面,一是对数据进行提取时,找到对应的节点名抓取

其文本数据,例如“//span[@class=,s_title]/text()”用于提取论坛帖子的标题文本;二是

结合正则表达式对URL进行定位和限制爬取,只有指定位置的满足一定正则表达式的

URL链接才会被被加入待爬取URL队列中。

从爬取模块整体上来看,新闻报道并不是每时每刻都有,且内容一经发布便不会再

改变,所以只需对其进行定时爬取,比如每晚定时对当天的新闻进行采集,虽然这样损

失了一点时效性,对于某些突发热点事件没有办法做到实时抓取,但是对于整个系统作

息演化分析并没有太大影响。而针对天涯论坛,每个时间点都会产生新的帖子以及帖子

的更新,为了避免冗余并提高效率,对一个页面进行爬取前,首先要判断是否已经过爬

取,然后比较回复的楼层数,如有更新则进行增量爬取即可,这里不可避免的会出现帖

子连续性问题,即同一篇帖子的连续楼层的数据在数据库中的位置可能并不连续,需要

通过索引的建立进行弥补;如果帖子没有更新,则无需对帖子进行再次爬取。

3.4.2数据持久化实现

在利用爬虫对相关页面进行解析下载之后,还需要将爬虫与数据库相连接以实现持

第22页

久化,考虑到数据来自于多个社交媒体,同时需要对大量数据进行存储和操作,本文研

究实现中选择MySQL社区版既能保证功能和性能,又能做到灵活便捷,所以本文将采

用MySQL和NavicatforMySQL(一个简明高效的第三方MySQL数据库可视化管理工

具)来对数据进行存储和管理。结合前文背景介绍,选取Mybatis作为持久化框架工具,

首先要在项目中引入Mybatis和mysqlJDBC驱动依赖包,然后新建一个config.xml文件

用于配置数据源等信息,这样MyBatis可以根据这个信息去连接数据库、管理事务。部

分配置如表3.2所示:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论