一种基于分布式的舆情数据实时采集方法和系统的制作方法

文档序号:10725175阅读:530来源:国知局
一种基于分布式的舆情数据实时采集方法和系统的制作方法
【专利摘要】本发明公开了一种基于分布式的舆情数据实时采集方法及系统,方法包括以下步骤:S1:建立舆情数据网站类库,分类并定义爬取数据项;S2:将数据采集网站列表传输给数据采集服务器,服务器分配相应的爬虫以休眠的模式循环地爬取数据;S3:对爬取到的源网页数据进行标签解析,定位目标数据项位置获取目标数据项;S4:将获取到的结果数据项封装成对应类的统一格式;S5:将封装后的数据存入对应的数据库;S6:生成监测日志文件。本发明架构先进,通过使用工厂模式作为系统的主要设计模式,能够快速生成新实例,将浏览器访问、日志生成、数据封装、代理设置以及队列设置等系统核心功能封装起来,增强系统的可扩展性和可移植性,提高代码的可重用性和系统的可维护性。
【专利说明】
一种基于分布式的舆情数据实时采集方法和系统
技术领域
[0001]本发明涉及互联网舆情数据的分布式高并发采集方法及系统,特别的涉及目标数据的高效、实时采集技术实现方法及系统,尤其涉及一种基于分布式的舆情数据实时采集方法及系统。
【背景技术】
[0002]舆情是在一定的社会空间内,围绕中介性社会事件的发生、发展和变化,民众对社会管理者产生和持有的社会政治态度。目前,网络成为反映社会舆情的主要载体之一,在舆情传播中起着重要的作用。而舆论危机的爆发让越来越多的人关注社会舆论的产生和发展。各级党政机关要及时了解信息,加强舆情监控,提高舆情应对能力和在新舆论环境中的执政能力,及时化解矛盾,处理好政府和民众的关系。企事业单位也需要关注网络舆情,利用市场已有的舆情分析系统和服务平台,或者人员与工具结合,掌控网络舆情,辅助决策。如何从大量的网络数据中提取出关键信息,是当前技术研究的一个重点。
[0003]传统的通用搜索引擎作为一个辅助检索信息的工具,成为用户访问网络的入口和指南。但是,这些通用的搜索引擎也存在着一定的局限性,1、通用搜索引擎所返回的结果包含大量用户不关心的网页。通用搜索引擎往往对信息含量密集且具有一定结构的数据无能为力,不能很好地发现和获取关键信息。2、简单的基于互联网的数据采集系统,其采集方式单一,无法同时多任务执行,这就导致了数据的采集效率较低,无法满足数据的实时性。3、目前的其他舆情分析检测系统,舆情数据大部分采用离线处理机制,在结构上就导致了其数据必然存在一定的时延。而随着网络技术的发展,信息更新的速度越来越快,低时延的舆情数据采集系统成为舆情分析项目的迫切需求。

【发明内容】

[0004]本发明的目的在于克服现有技术的不足,提供一种基于分布式的舆情数据实时采集方法及系统,爬取的数据可生成在线舆情大数据库,为相关政府及企业用户提供在线数据库服务。
[0005]本发明的目的是通过以下技术方案来实现的:一种基于分布式的舆情数据实时采集方法,它包括以下步骤:
SI:建立舆情数据网站类库,分类舆情数据源站,并定义每类网站的爬取数据项;
S2:将数据采集网站列表传输给数据采集服务器,数据采集服务器分配相应的爬虫以休眠的模式循环地爬取目标网站数据,采集过程中使用生产者消费者模式并发执行采集任务;
53:对爬取到的源网页数据进行标签解析,定位目标数据项位置获取目标数据项;
54:将获取到的结果数据项封装成对应类的统一格式;
55:将封装后的数据存入对应的数据库;
S6:生成监测日志文件。
[0006]所述的步骤SI包括以下子步骤:
Sll:将所有数据源站分为多类,针对每一类网站收集包括网站的网页地址、网页标题、关键字在内的信息建立类相关的关键字库;
S12:根据每类网站的页面数据特点,事先定义好要爬取的数据字段;
S13:当有新的目标网站需要采集时,获取包括目标网站地址、页面标题、页面关键字在内的与关键字库对应的信息,根据获得的信息与已有的类库数据对目标网站进行分类;同时筛选出网站的文章列表地址,过滤包括广告在内的与舆情数据无关的页面,将筛选出的地址加入数据采集网站列表。
[0007]所述的步骤S2包括以下子步骤:
S21:将分类后的舆情数据源网站以列表的方式传给数据采集服务器,数据采集服务器将采集任务分配到多台数据采集PC;针对每个源站,系统设置专门的爬虫进行数据爬取;S22:在数据爬取的过程中对源网站进行实时监控,系统在整个数据爬取过程中采用休眠机制循环访问网站页面,休眠时间根据网站的数据更新速度动态设置;当更新量达到采集阈值时,爬虫激活进行新一轮的数据采集;同时,在每一轮数据采集完成之后,系统标识最后的采集位置,日志文件记录本次循环共采集的数据条数,系统进入休眠状态。
[0008]在数据爬取过程中,系统首先采用工厂设计模式将模拟访问不同的浏览器方法封装起来,并提供统一的实例化接口;在具体实例化的过程中,指定浏览器类型名称即可生产出对应的浏览器访问类;爬虫将根据数据源站的类型与复杂度生成对应的浏览器访问实例;同时,代理设置模块在浏览器访问过程中自动为程序分配IP地址。
[0009]页面数据分为静态数据和动态数据;对于静态页面数据,爬虫调用模拟浏览器访问方法页面地址获取网页源数据;对于动态数据,爬虫在访问页面之前,需要通过抓包的方式找到动态数据返回链接,再调用浏览器访问方法获取页面数据。
[0010]将URL地址存储队列方法封装起来,并提供统一的实例化接口;采用多级生产者消费者模式并发的爬取数据:一级生产者根据分配的数据源网站地址访问页面获取数据的一级URL地址,并将地址存储到数据队列当中;若当前地址页面不是正文地址,而是正文列表地址,系统将分配二级生成者从当前地址队列中获取URL地址进行数据爬取,直到获取到正文URL地址;消费者负责从正文地址队列中取出URL数据,访问页面获取正文页面内容;
在此过程中,生产者和消费者彼此之间通过阻塞队列来进行通讯;
采用队列设置模块提供队列的存取操作,并初始化队列数据库并建立连接。
[0011]所述的步骤S3包括对动态网页数据的分析和对静态页面数据的分析,其中对于静态页面数据使用封装好的Xpath方法,给定数据项的路径地址即可获取到对应数据项;同时结合正则表达式,通过正则表达式过滤筛选数据,补充获取XPath无法解析到的数据;系统将解析到的数据赋值给事前定义好的对应的数据项;对于动态网页数据,使用JSON方法获取字典格式的动态网页数据项。
[0012]所述的步骤S4步骤包括:在数据采集之前,采用工厂设计模式,将每一类网站定义好的数据项以及保留字段封装成字典格式,并提供统一的数据接口;在数据采集完成后,根据数据源网站类别,系统调用对应的封装方法将采集到的数据封装为对应类的统一格式;在封装过程中使用UUID方法为每条数据生成唯一的标识符,方便后续的检索操作。
[0013]所述的步骤S5包括:采用工厂设计模式将结果数据的存储操作封装为队列方法,采集到数据之后调用队列方法将数据输入数据库服务器;在数据库服务器中分别为每一类源数据网站设置对应的数据库,在数据存储时将数据存到对应的数据库;根据保存数据的不同采取不同的数据库,保存生产者和消费者之间的URL队列数据。
[0014]所述的步骤S6包括:采用工厂模式将日志方法封装起来,提供统一的接口访问;日志采用logging模块给运行中的程序提供了一个标准的信息输出接口;系统开始运行的时候即调用日志接口生成实例,在整个过程中记录每个模块的运行状态与结果;在每一轮爬虫程序执行完成时,将监测结果按天生成日志文件。
[0015]采用所述的方法的系统,所述的系统包括:
数据准备模块,用于完成源站的分类以及目标数据项定义;
更新监测模块,用于监测目标数据网站的更新情况。
[0016]数据爬取模块,用于模拟浏览器环境访问源站目标页面并将页面数据获取到本地;
代理设置模块,用于自动为服务器分配IP地址。
[0017]队列设置模块,用于负责管理阻塞URL采集队列,以及结果数据存储队列,并进行去重操作;
数据解析模块,用于通过分析源数据,并从中解析出目标数据项;
数据封装模块,用于将爬取到的数据项统一封装成标准格式输出;
数据存储模块,用于将封装好的数据存储到在线舆情大数据库;
日志生成模块,用于各环节监测状态的日志输出。
[0018]本发明的有益效果是:
1.系统架构先进,通过使用工厂模式作为系统的主要设计模式,能够快速生成新实例。将浏览器访问,日志生成,数据封装,代理设置以及队列设置等系统核心功能封装起来。增强了系统的可扩展性和可移植性,提高了代码的可重用性和系统的可维护性。
[0019]2.采用selenium和PhantomJS技术模拟浏览器访问web页面获取网络数据,能够支持不同操作系统下的各种主流浏览器。
[0020]3.采用多线程的方式,使用生产者消费者模式并发实现舆情数据的web网页地址和网页数据爬取。生产者负责获取数据URL地址,消费者负责从URL地址获取网页数据。该模式大大的提高了系统的工作效率。
[0021]4.休眠式的采集方式可以在合理使用服务器资源的情况下,实时的采集网络舆情数据,保证了数据的新鲜度与实时性。同时多元化的数据格式与广泛的数据源保证了数据的完整性。
[0022]5.采用阻塞队列解决生产者和消费者之间的强耦合问题,平衡了生产者和消费者的处理能力。
[0023]6.采用SSDB开源高性能数据库提供持久化队列服务,存储URL数据,其支持多种数据结构,同时满足高性能和大数据的需求,具有高稳定性。
[0024]7.提供标准的数据封装库,将爬取到的数据字段封装成统一格式进行存储。使用UUID作为数据的全局唯一标识符,保证每条数据在时间和空间上的唯一性。
[0025]8.采用基于分布式文件存储的MongoDB作为数据库。作为非关系型数据库,能够支持比较复杂的数据类型。通过系统的休眠机制,和关键字设置等策略,可以对数据进行实时的,有针对性的爬取。
[0026]9.采用日志系统对系统各个模块进行实时监测反馈,通过日志信息可更好的调度数据采集服务器。
【附图说明】
[0027]图1为本发明方法流程图;
图2为本发明系统方框图。
【具体实施方式】
[0028]下面结合附图进一步详细描述本发明的技术方案:
如图1所示,一种基于分布式的舆情数据实时采集方法,它包括以下步骤:
S1:建立舆情数据网站类库,分类舆情数据源站,并定义每类网站的爬取数据项,包括以下子步骤:
S11:将所有数据源站三大类:新闻、微博、论坛;针对每一类网站收集包括网站的网页地址、网页标题、关键字在内的信息建立类相关的关键字库;
舆情信息的数据来源主要包括新闻类门户网站,社交网站,论坛博客等信息的主流共享网站。虽然网站之间在页面格式与布局上存在很大差异,但同类型的网站其数据项设置具有一定的相似性。因此在进行数据采集前,首先将所有数据网站分为新闻,微博,论坛三大类。其中新闻类包括新闻类门户网站,报刊杂志类门户网站,博客,微信等。微博包括新浪、腾讯等主流社交网站。论坛包括贴吧,BBS,热门论坛等。同时收集源网站源站地址、源站标题、源站网页关键字等信息建立网站类库。
[0029]不同的网站类型其网页数据项不同,为了在后续的数据采集中能够尽量的获取格式统一的结果数据,在采集数据之前系统对三类源站的目标数据进行定义,首先定义相同的数据字段,如文章正文,标题时间等,对于网站之间不同的数据项,我们设置了保留字段来存储特殊字段。
[0030]S12:根据每类网站的页面数据特点,事先定义好要爬取的数据字段;
对于要爬取数据的网站,首先访问网站页面获取源站地址、源站标题、源站网页关键字等信息,综合以上信息将源站分到新闻,微博,论坛其中一类。并调用该类对应的要爬取的数据字段。
[0031 ] S13:当有新的目标网站需要采集时,获取包括目标网站地址、页面标题、页面关键字在内的与关键字库对应的信息,根据获得的信息与已有的类库数据对目标网站进行分类;同时筛选出网站的文章列表地址,过滤包括广告在内的与舆情数据无关的页面,将筛选出的地址加入数据采集网站列表。
[0032]针对分类后的源站,分析页面布局结构,特别是源站的栏目设置,定位每个栏目的数据列表页。根据目标数据筛选栏目,并将栏目地址加到任务队列中。若需指定采集包含某个关键字的数据,则通过源站的搜索功能搜索包含关键字的数据列表。
[0033]S2:将数据采集网站列表传输给数据采集服务器,数据采集服务器分配相应的爬虫以休眠的模式循环地爬取目标网站数据,采集过程中使用生产者消费者模式并发执行采集任务; 所述的步骤S2包括以下子步骤:
S21:将分类后的舆情数据源网站以列表的方式传给数据采集服务器,数据采集服务器将采集任务分配到多台数据采集PC;针对每个源站,系统设置专门的爬虫进行数据爬取;S22:在数据爬取的过程中对源网站进行实时监控,由于网站数据的不断更新,为了采集到实时数据,系统在整个数据爬取过程中采用休眠机制循环访问网站页面,休眠时间根据网站的数据更新速度动态设置;当更新量达到采集阈值时,爬虫激活进行新一轮的数据采集;同时,在每一轮数据采集完成之后,系统标识最后的采集位置,日志文件记录本次循环共采集的数据条数,系统进入休眠状态。
[0034]在数据爬取过程中,系统首先采用工厂设计模式将模拟访问不同的浏览器方法封装起来,并提供统一的实例化接口;在具体实例化的过程中,指定浏览器类型名称即可生产出对应的浏览器访问类;爬虫将根据数据源站的类型与复杂度生成对应的浏览器访问实例;其中浏览器访问类包括PhantomJS和Ur 11 ib2两种,PhantomJS可在无界面的情况下支持各种浏览器操作,但因其强大,完备的浏览器操作功能导致在访问的页面过程中耗时较长。而Urllib2功能虽然较弱,但其页面数据获取速度快。因此针对不同的目标网站系统应选择不同的浏览器访问模式。针对新闻,论坛,博客等限制要求较低的网站,为了提高数据采集效率,系统使用Urllib2方式获取页面数据。而像微博这类反扒机制高,用户访问限制较强的网站系统则采用PhantomJS完美的模拟浏览器访问页面,获取数据。针对某些反扒机制较好的网页,系统还需要模拟浏览器登录网站获取到页面cookie文件才可进一步访问页面数据。
[0035]同时,代理设置模块在浏览器访问过程中自动为程序分配IP地址。在访问web页面数据之前,需要对数据采集服务器的地址进行代理设置,自动的为服务器分配IP地址。
[0036]页面数据分为静态数据和动态数据;对于静态页面数据,爬虫调用模拟浏览器访问方法页面地址获取网页源数据;对于动态数据,爬虫在访问页面之前,需要通过抓包的方式找到动态数据返回链接,再调用浏览器访问方法获取页面数据。
[0037]将URL地址存储队列方法封装起来,并提供统一的实例化接口;采用多级生产者消费者模式并发的爬取数据:一级生产者根据分配的数据源网站地址访问页面获取数据的一级URL地址,并将地址存储到数据队列当中;若当前地址页面不是正文地址,而是正文列表地址,系统将分配二级生成者从当前地址队列中获取URL地址进行数据爬取,直到获取到正文URL地址;消费者负责从正文地址队列中取出URL数据,访问页面获取正文页面内容。
[0038]具体的,根据不同的源站编写不同的爬虫,数据采集服务器通过分布式高并发的方式采集网站数据。同时要保证数据的多源(各类新闻网站,高校贴吧,热门论坛,博客,微博,微信公众平台等主流信息共享网站)、多模态(文本、图片等)近实时分布式数据抓取。根据源站类型爬取不同的数据项,需设计文章爬取、评论爬取、用户信息爬取子模块。在数据采集过程采用生产者消费者模式并行爬取。生产者负责从源网站爬取数据一级URL存储到数据队列中,消费者则从队列取出URL访问页面获取页面源数据。此外,SSDB数据库能同时满足高性能和大数据的需求,作为生产者和消费者的中间数据队列,提供稳定,高效的数据传输,完成了数据的高并发采集。此外对数据的爬取采取了休眠机制,让数据爬取模块循环工作,但在每个工作周期之间设置合理的休眠时间,在保证数据实时性的同时又让资源得到充分利用。在每个数据采集周期结束后,标识爬取位置,下一次的数据采集从当前位置开始,系统进入休眠状态。采集过程中,系统实时监测网站的更新情况,当网站更新量达到设置的阈值时系统激活进行下一轮的数据采集。
[0039]在此过程中,生产者和消费者彼此之间不直接通讯,而是通过阻塞队列来进行通讯。
[0040]阻塞队列就相当于一个缓冲区,平衡了生产者和消费者的处理能力,提高了数据的采集效率。队列设置模块提供队列的存取操作,并初始化队列数据库并建立连接。
[0041]在进行数据爬取前,进行阻塞队列初始化设置,提前与队列数据库建立连接。此夕卜,系统也将结果数据的存储方法封装为队列方法,并提前与结果数据库建立连接,提高程序的可读性,并且统一的封装之后,便于代码的管理。队列不仅管理需要采集的数据源URL,同时也要对URL进行去重处理,避免重复采集操作浪费服务器资源。
[0042]S3:对爬取到的源网页数据进行标签解析,定位目标数据项位置获取目标数据项; 所述的步骤S3包括对动态网页数据的分析和对静态页面数据的分析,其中对于静态页面数据使用封装好的Xpath方法,给定数据项的路径地址即可获取到对应数据项;同时结合正则表达式,通过正则表达式过滤筛选数据,补充获取XPath无法解析到的数据;系统将解析到的数据赋值给事前定义好的对应的数据项;对于动态网页数据,使用JSON方法获取字典格式的动态网页数据项。
[0043]数据爬取模块获取到的数据为XML格式的源码页面数据,目标数据包含在众多复杂的页面标签中。因此要对页面进行解析,找到目标数据所在的标签位置,然后定位该标签取出需要的数据项。同时源码的页面数据不仅包含文字,标签等数据,也包含许多特殊字符。为了避免给后续的数据处理造成麻烦,在此步需对爬取到的原始数据进行数据清洗,如去除特殊字符,空格等操作。由于不同的网站其页面结构不同,因此页面解析必须针对每个特点的网站编写。并且每个网站的页面结构并不是长期固定,因此在页面解析过程中必须考虑代码的鲁棒性,也就是能够在页面结构轻微的改变的情况下系统任然能够取到目标数据。因此在标签定位的时候多使用标签的属性名,而不是标签。
[0044]S4:将获取到的结果数据项封装成对应类的统一格式;
所述的步骤S4步骤包括:在数据采集之前,采用工厂设计模式,将三类网站定义好的数据项以及保留字段封装成字典格式,并提供统一的数据接口;在数据采集完成后,根据数据源网站类别,系统调用对应的封装方法将采集到的数据封装为对应类的统一格式;在封装过程中使用UUID方法为每条数据生成唯一的标识符,方便后续的检索操作。
[0045]数据采集的源网站是多样性,而系统为方便存储综合的把源站分为了三类。每类源网站之间页面数据也存在着一定的差异性,因此需要爬取的数据项之间也会有一定的差异性。为了消除差异性,标准化的输出结果数据,系统进行根据事先定义好的数据项,对爬取到的结果数据进行统一封装。并且为了方便后续的查询处理,我们要为每条增加唯一的标识符。
[0046]S5:将封装后的数据存入对应的数据库;
所述的步骤S5包括:采用工厂设计模式将结果数据的存储操作封装为队列方法,采集到数据之后调用队列方法将数据输入数据库服务器;在数据库服务器中分别为每一类源数据网站设置对应的数据库,在数据存储时将数据存到对应的数据库;根据保存数据的不同采取不同的数据库,保存生产者和消费者之间的URL队列数据系统采用SSDB数据库。SSDB作为一个高性能的数据库服务器,对内存的需求小,存取数据速度非常快且能够支持多线程访问。
[0047]针对获取到的最终页面数据项,由于数据在类型以及关系上可能复杂多样,因此系统采用Mongodb数据库。Mongodb提供了用于查询,创建,更新和删除的工具存储形式,相较于传统的关系型数据库,它可以使用一个表存储原来需要使用多表关联才能存储的数据库。并且当要增加一个属性值的时候MongoDB面向文档的形式可以使其属性值轻意的增加和删除。而原来的关系型数据库要实现这个需要有很多的属性表来支持。MongoDB提供两种数据写入模式:一种是高效的fire-and-forget模式就是只管向数据库服务器提交数据不等数据库服务器的回应。另外一种是安全模式,就是写入的同时还要与服务器同步,当数据的安全性要求高的时候适合用安全模式。当数据存储在Mongodb数据库之后,我们可以将数据库作为在线舆情大数据库,为其他相关用户提供在线的数据访问接口。
[0048]S6:生成监测日志文件。
[0049]所述的步骤S6包括:系统采用工厂模式将日志方法封装起来,提供统一的接口访问。日志采用logging模块给运行中的程序提供了一个标准的信息输出接口。系统一开始即调用日志接口生成实例,在整个过程中,记录每个模块的运行状态与结果。在每一轮爬虫程序执行完成时将监测结果按天生成日志文件,方便程序员了解程序运行状态,维护程序。
[0050]如图2所示,采用所述的方法的系统,所述的系统包括:
数据准备模块,用于完成源站的分类以及目标数据项定义;
更新监测模块,用于监测目标数据网站的更新情况。
[0051]数据爬取模块,用于模拟浏览器环境访问源站目标页面并将页面数据获取到本地;
代理设置模块,用于自动为服务器分配IP地址。
[0052]队列设置模块,用于负责管理阻塞URL采集队列,以及结果数据存储队列,并进行去重操作;
数据解析模块,用于通过分析源数据,并从中解析出目标数据项;
数据封装模块,用于将爬取到的数据项统一封装成标准格式输出;
数据存储模块,用于将封装好的数据存储到在线舆情大数据库;
日志生成模块,用于各环节监测状态的日志输出。
【主权项】
1.一种基于分布式的舆情数据实时采集方法,其特征在于:它包括以下步骤: Si:建立舆情数据网站类库,分类舆情数据源站,并定义每类网站的爬取数据项; S2:将数据采集网站列表传输给数据采集服务器,数据采集服务器分配相应的爬虫以休眠的模式循环地爬取目标网站数据,采集过程中使用生产者消费者模式并发执行采集任务; 53:对爬取到的源网页数据进行标签解析,定位目标数据项位置获取目标数据项; 54:将获取到的结果数据项封装成对应类的统一格式; 55:将封装后的数据存入对应的数据库; S6:生成监测日志文件。2.根据权利要求1所述的一种基于分布式的舆情数据实时采集方法,其特征在于:所述的步骤SI包括以下子步骤: Sll:将所有数据源站分为多类,针对每一类网站收集包括网站的网页地址、网页标题、关键字在内的信息建立类相关的关键字库; S12:根据每类网站的页面数据特点,事先定义好要爬取的数据字段; S13:当有新的目标网站需要采集时,获取包括目标网站地址、页面标题、页面关键字在内的与关键字库对应的信息,根据获得的信息与已有的类库数据对目标网站进行分类;同时筛选出网站的文章列表地址,过滤包括广告在内的与舆情数据无关的页面,将筛选出的地址加入数据采集网站列表。3.根据权利要求1所述的一种基于分布式的舆情数据实时采集方法,其特征在于:所述的步骤S2包括以下子步骤: S21:将分类后的舆情数据源网站以列表的方式传给数据采集服务器,数据采集服务器将采集任务分配到多台数据采集PC;针对每个源站,系统设置专门的爬虫进行数据爬取; S22:在数据爬取的过程中对源网站进行实时监控,系统在整个数据爬取过程中采用休眠机制循环访问网站页面,休眠时间根据网站的数据更新速度动态设置;当更新量达到采集阈值时,爬虫激活进行新一轮的数据采集;同时,在每一轮数据采集完成之后,系统标识最后的采集位置,日志文件记录本次循环共采集的数据条数,系统进入休眠状态。4.根据权利要求1或3所述的一种基于分布式的舆情数据实时采集方法,其特征在于:在数据爬取过程中,系统首先采用工厂设计模式将模拟访问不同的浏览器方法封装起来,并提供统一的实例化接口;在具体实例化的过程中,指定浏览器类型名称即可生产出对应的浏览器访问类;爬虫将根据数据源站的类型与复杂度生成对应的浏览器访问实例;同时,代理设置模块在浏览器访问过程中自动为程序分配IP地址。5.根据权利要求1或3所述的一种基于分布式的舆情数据实时采集方法,其特征在于:将URL地址存储队列方法封装起来,并提供统一的实例化接口;采用多级生产者消费者模式并发的爬取数据:一级生产者根据分配的数据源网站地址访问页面获取数据的一级URL地址,并将地址存储到数据队列当中;若当前地址页面不是正文地址,而是正文列表地址,系统将分配二级生成者从当前地址队列中获取URL地址进行数据爬取,直到获取到正文URL地址;消费者负责从正文地址队列中取出URL数据,访问页面获取正文页面内容; 在此过程中,生产者和消费者彼此之间通过阻塞队列来进行通讯; 采用队列设置模块提供队列的存取操作,并初始化队列数据库并建立连接。6.根据权利要求1所述的一种基于分布式的舆情数据实时采集方法,其特征在于:所述的步骤S3包括对动态网页数据的分析和对静态页面数据的分析,其中对于静态页面数据使用封装好的Xpath方法,给定数据项的路径地址即可获取到对应数据项;同时结合正则表达式,通过正则表达式过滤筛选数据,补充获取XPath无法解析到的数据;系统将解析到的数据赋值给事前定义好的对应的数据项;对于动态网页数据,使用JSON方法获取字典格式的动态网页数据项。7.根据权利要求1所述的一种基于分布式的舆情数据实时采集方法,其特征在于:所述的步骤S4步骤包括:在数据采集之前,采用工厂设计模式,将每一类网站定义好的数据项以及保留字段封装成字典格式,并提供统一的数据接口;在数据采集完成后,根据数据源网站类别,系统调用对应的封装方法将采集到的数据封装为对应类的统一格式;在封装过程中使用UUID方法为每条数据生成唯一的标识符,方便后续的检索操作。8.根据权利要求1所述的一种基于分布式的舆情数据实时采集方法,其特征在于:所述的步骤S5包括:采用工厂设计模式将结果数据的存储操作封装为队列方法,采集到数据之后调用队列方法将数据输入数据库服务器;在数据库服务器中分别为每一类源数据网站设置对应的数据库,在数据存储时将数据存到对应的数据库;根据保存数据的不同采取不同的数据库,保存生产者和消费者之间的URL队列数据。9.根据权利要求1所述的一种基于分布式的舆情数据实时采集方法,其特征在于:所述的步骤S6包括:采用工厂模式将日志方法封装起来,提供统一的接口访问;日志采用logging模块给运行中的程序提供了一个标准的信息输出接口;系统开始运行的时候即调用日志接口生成实例,在整个过程中记录每个模块的运行状态与结果;在每一轮爬虫程序执行完成时,将监测结果按天生成日志文件。10.采用权利要求1?9任意一项所述的方法的系统,其特征在于:所述的系统包括: 数据准备模块,用于完成源站的分类以及目标数据项定义; 更新监测模块,用于监测目标数据网站的更新情况; 数据爬取模块,用于模拟浏览器环境访问源站目标页面并将页面数据获取到本地; 代理设置模块,用于自动为服务器分配IP地址; 队列设置模块,用于负责管理阻塞URL采集队列,以及结果数据存储队列,并进行去重操作; 数据解析模块,用于通过分析源数据,并从中解析出目标数据项; 数据封装模块,用于将爬取到的数据项统一封装成标准格式输出; 数据存储模块,用于将封装好的数据存储到在线舆情大数据库; 日志生成模块,用于各环节监测状态的日志输出。
【文档编号】G06F17/30GK106096056SQ201610502047
【公开日】2016年11月9日
【申请日】2016年6月30日
【发明人】李平, 陈雁, 胡栋, 代臻, 刘婷, 许斌, 孙先, 林辉, 赵玲
【申请人】西南石油大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1