CN106096056B - 一种基于分布式的舆情数据实时采集方法和系统 - Google Patents
一种基于分布式的舆情数据实时采集方法和系统 Download PDFInfo
- Publication number
- CN106096056B CN106096056B CN201610502047.7A CN201610502047A CN106096056B CN 106096056 B CN106096056 B CN 106096056B CN 201610502047 A CN201610502047 A CN 201610502047A CN 106096056 B CN106096056 B CN 106096056B
- Authority
- CN
- China
- Prior art keywords
- data
- address
- website
- page
- queue
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 75
- 238000012544 monitoring process Methods 0.000 claims abstract description 22
- 238000013461 design Methods 0.000 claims abstract description 13
- 238000005538 encapsulation Methods 0.000 claims abstract description 11
- 230000008569 process Effects 0.000 claims description 19
- 238000004458 analytical method Methods 0.000 claims description 12
- 230000007246 mechanism Effects 0.000 claims description 12
- 238000004088 simulation Methods 0.000 claims description 11
- 230000005059 dormancy Effects 0.000 claims description 8
- 230000003068 static effect Effects 0.000 claims description 8
- 238000013500 data storage Methods 0.000 claims description 6
- 230000014509 gene expression Effects 0.000 claims description 6
- 230000002265 prevention Effects 0.000 claims description 6
- 230000004913 activation Effects 0.000 claims description 4
- 238000007726 management method Methods 0.000 claims description 4
- 238000013459 approach Methods 0.000 claims description 3
- 235000014510 cooky Nutrition 0.000 claims description 3
- 125000004122 cyclic group Chemical group 0.000 claims description 3
- 238000001914 filtration Methods 0.000 claims description 3
- 238000004806 packaging method and process Methods 0.000 claims description 3
- 238000002360 preparation method Methods 0.000 claims description 3
- 238000012216 screening Methods 0.000 claims description 3
- 239000013589 supplement Substances 0.000 claims description 3
- 230000002708 enhancing effect Effects 0.000 abstract 1
- 238000012545 processing Methods 0.000 description 5
- 238000013480 data collection Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000009193 crawling Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000004321 preservation Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 244000097202 Rathbunia alamosensis Species 0.000 description 1
- 235000009776 Rathbunia alamosensis Nutrition 0.000 description 1
- BUGBHKTXTAQXES-UHFFFAOYSA-N Selenium Chemical compound [Se] BUGBHKTXTAQXES-UHFFFAOYSA-N 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 239000000969 carrier Substances 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000009194 climbing Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 229910052711 selenium Inorganic materials 0.000 description 1
- 239000011669 selenium Substances 0.000 description 1
- 230000006641 stabilisation Effects 0.000 description 1
- 238000011105 stabilization Methods 0.000 description 1
- 238000000547 structure data Methods 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/1734—Details of monitoring file system events, e.g. by the use of hooks, filter drivers, logs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1805—Append-only file systems, e.g. using logs or journals to store data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/951—Indexing; Web crawling techniques
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Between Computers (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于分布式的舆情数据实时采集方法及系统,方法包括以下步骤:S1:建立舆情数据网站类库,分类并定义爬取数据项;S2:将数据采集网站列表传输给数据采集服务器,服务器分配相应的爬虫以休眠的模式循环地爬取数据;S3:对爬取到的源网页数据进行标签解析,定位目标数据项位置获取目标数据项;S4:将获取到的结果数据项封装成对应类的统一格式;S5:将封装后的数据存入对应的数据库;S6:生成监测日志文件。本发明架构先进,通过使用工厂模式作为系统的主要设计模式,能够快速生成新实例,将浏览器访问、日志生成、数据封装、代理设置以及队列设置等系统核心功能封装起来,增强系统的可扩展性和可移植性,提高代码的可重用性和系统的可维护性。
Description
技术领域
本发明涉及互联网舆情数据的分布式高并发采集方法及系统,特别的涉及目标数据的高效、实时采集技术实现方法及系统,尤其涉及一种基于分布式的舆情数据实时采集方法及系统。
背景技术
舆情是在一定的社会空间内,围绕中介性社会事件的发生、发展和变化,民众对社会管理者产生和持有的社会政治态度。目前,网络成为反映社会舆情的主要载体之一,在舆情传播中起着重要的作用。而舆论危机的爆发让越来越多的人关注社会舆论的产生和发展。各级党政机关要及时了解信息,加强舆情监控,提高舆情应对能力和在新舆论环境中的执政能力,及时化解矛盾,处理好政府和民众的关系。企事业单位也需要关注网络舆情,利用市场已有的舆情分析系统和服务平台,或者人员与工具结合,掌控网络舆情,辅助决策。如何从大量的网络数据中提取出关键信息,是当前技术研究的一个重点。
传统的通用搜索引擎作为一个辅助检索信息的工具,成为用户访问网络的入口和指南。但是,这些通用的搜索引擎也存在着一定的局限性,1、通用搜索引擎所返回的结果包含大量用户不关心的网页。通用搜索引擎往往对信息含量密集且具有一定结构的数据无能为力,不能很好地发现和获取关键信息。2、简单的基于互联网的数据采集系统,其采集方式单一,无法同时多任务执行,这就导致了数据的采集效率较低,无法满足数据的实时性。3、目前的其他舆情分析检测系统,舆情数据大部分采用离线处理机制,在结构上就导致了其数据必然存在一定的时延。而随着网络技术的发展,信息更新的速度越来越快,低时延的舆情数据采集系统成为舆情分析项目的迫切需求。
发明内容
本发明的目的在于克服现有技术的不足,提供一种基于分布式的舆情数据实时采集方法及系统,爬取的数据可生成在线舆情大数据库,为相关政府及企业用户提供在线数据库服务。
本发明的目的是通过以下技术方案来实现的:一种基于分布式的舆情数据实时采集方法,它包括以下步骤:
S1:建立舆情数据网站类库,分类舆情数据源站,并定义每类网站的爬取数据项;
S2:将数据采集网站列表传输给数据采集服务器,数据采集服务器分配相应的爬虫以休眠的模式循环地爬取目标网站数据,采集过程中使用生产者消费者模式并发执行采集任务;
S3:对爬取到的源网页数据进行标签解析,定位目标数据项位置获取目标数据项;
S4:将获取到的结果数据项封装成对应类的统一格式;
S5:将封装后的数据存入对应的数据库;
S6:生成监测日志文件。
所述的步骤S1包括以下子步骤:
S11:将所有数据源站分为多类,针对每一类网站收集包括网站的网页地址、网页标题、关键字在内的信息建立类相关的关键字库;
S12:根据每类网站的页面数据特点,事先定义好要爬取的数据字段;
S13:当有新的目标网站需要采集时,获取包括目标网站地址、页面标题、页面关键字在内的与关键字库对应的信息,根据获得的信息与已有的类库数据对目标网站进行分类;同时筛选出网站的文章列表地址,过滤包括广告在内的与舆情数据无关的页面,将筛选出的地址加入数据采集网站列表。
所述的步骤S2包括以下子步骤:
S21:将分类后的舆情数据源网站以列表的方式传给数据采集服务器,数据采集服务器将采集任务分配到多台数据采集PC;针对每个源站,系统设置专门的爬虫进行数据爬取;
S22:在数据爬取的过程中对源网站进行实时监控,系统在整个数据爬取过程中采用休眠机制循环访问网站页面,休眠时间根据网站的数据更新速度动态设置;当更新量达到采集阈值时,爬虫激活进行新一轮的数据采集;同时,在每一轮数据采集完成之后,系统标识最后的采集位置,日志文件记录本次循环共采集的数据条数,系统进入休眠状态。
在数据爬取过程中,系统首先采用工厂设计模式将模拟访问不同的浏览器方法封装起来,并提供统一的实例化接口;在具体实例化的过程中,指定浏览器类型名称即可生产出对应的浏览器访问类;爬虫将根据数据源站的类型与复杂度生成对应的浏览器访问实例;同时,代理设置模块在浏览器访问过程中自动为程序分配IP地址。
页面数据分为静态数据和动态数据;对于静态页面数据,爬虫调用模拟浏览器访问方法页面地址获取网页源数据;对于动态数据,爬虫在访问页面之前,需要通过抓包的方式找到动态数据返回链接,再调用浏览器访问方法获取页面数据。
将URL地址存储队列方法封装起来,并提供统一的实例化接口;采用多级生产者消费者模式并发的爬取数据:一级生产者根据分配的数据源网站地址访问页面获取数据的一级URL地址,并将地址存储到数据队列当中;若当前地址页面不是正文地址,而是正文列表地址,系统将分配二级生成者从当前地址队列中获取URL地址进行数据爬取,直到获取到正文URL地址;消费者负责从正文地址队列中取出URL数据,访问页面获取正文页面内容;
在此过程中,生产者和消费者彼此之间通过阻塞队列来进行通讯;
采用队列设置模块提供队列的存取操作,并初始化队列数据库并建立连接。
所述的步骤S3包括对动态网页数据的分析和对静态页面数据的分析,其中对于静态页面数据使用封装好的Xpath方法,给定数据项的路径地址即可获取到对应数据项;同时结合正则表达式,通过正则表达式过滤筛选数据,补充获取XPath无法解析到的数据;系统将解析到的数据赋值给事前定义好的对应的数据项;对于动态网页数据,使用JSON方法获取字典格式的动态网页数据项。
所述的步骤S4步骤包括:在数据采集之前,采用工厂设计模式,将每一类网站定义好的数据项以及保留字段封装成字典格式,并提供统一的数据接口;在数据采集完成后,根据数据源网站类别,系统调用对应的封装方法将采集到的数据封装为对应类的统一格式;在封装过程中使用UUID方法为每条数据生成唯一的标识符,方便后续的检索操作。
所述的步骤S5包括:采用工厂设计模式将结果数据的存储操作封装为队列方法,采集到数据之后调用队列方法将数据输入数据库服务器;在数据库服务器中分别为每一类源数据网站设置对应的数据库,在数据存储时将数据存到对应的数据库;根据保存数据的不同采取不同的数据库,保存生产者和消费者之间的URL队列数据。
所述的步骤S6包括:采用工厂模式将日志方法封装起来,提供统一的接口访问;日志采用logging模块给运行中的程序提供了一个标准的信息输出接口;系统开始运行的时候即调用日志接口生成实例,在整个过程中记录每个模块的运行状态与结果;在每一轮爬虫程序执行完成时,将监测结果按天生成日志文件。
采用所述的方法的系统,所述的系统包括:
数据准备模块,用于完成源站的分类以及目标数据项定义;
更新监测模块,用于监测目标数据网站的更新情况。
数据爬取模块,用于模拟浏览器环境访问源站目标页面并将页面数据获取到本地;
代理设置模块,用于自动为服务器分配IP地址。
队列设置模块,用于负责管理阻塞URL采集队列,以及结果数据存储队列,并进行去重操作;
数据解析模块,用于通过分析源数据,并从中解析出目标数据项;
数据封装模块,用于将爬取到的数据项统一封装成标准格式输出;
数据存储模块,用于将封装好的数据存储到在线舆情大数据库;
日志生成模块,用于各环节监测状态的日志输出。
本发明的有益效果是:
1. 系统架构先进,通过使用工厂模式作为系统的主要设计模式,能够快速生成新实例。将浏览器访问,日志生成,数据封装,代理设置以及队列设置等系统核心功能封装起来。增强了系统的可扩展性和可移植性,提高了代码的可重用性和系统的可维护性。
2. 采用selenium和PhantomJS技术模拟浏览器访问web页面获取网络数据,能够支持不同操作系统下的各种主流浏览器。
3. 采用多线程的方式,使用生产者消费者模式并发实现舆情数据的web网页地址和网页数据爬取。生产者负责获取数据URL地址,消费者负责从URL地址获取网页数据。该模式大大的提高了系统的工作效率。
4. 休眠式的采集方式可以在合理使用服务器资源的情况下,实时的采集网络舆情数据,保证了数据的新鲜度与实时性。同时多元化的数据格式与广泛的数据源保证了数据的完整性。
5. 采用阻塞队列解决生产者和消费者之间的强耦合问题,平衡了生产者和消费者的处理能力。
6. 采用SSDB开源高性能数据库提供持久化队列服务,存储URL数据,其支持多种数据结构,同时满足高性能和大数据的需求,具有高稳定性。
7. 提供标准的数据封装库,将爬取到的数据字段封装成统一格式进行存储。使用UUID作为数据的全局唯一标识符,保证每条数据在时间和空间上的唯一性。
8. 采用基于分布式文件存储的MongoDB作为数据库。作为非关系型数据库,能够支持比较复杂的数据类型。通过系统的休眠机制,和关键字设置等策略,可以对数据进行实时的,有针对性的爬取。
9. 采用日志系统对系统各个模块进行实时监测反馈,通过日志信息可更好的调度数据采集服务器。
附图说明
图1为本发明方法流程图;
图2为本发明系统方框图。
具体实施方式
下面结合附图进一步详细描述本发明的技术方案:
如图1所示,一种基于分布式的舆情数据实时采集方法,它包括以下步骤:
S1:建立舆情数据网站类库,分类舆情数据源站,并定义每类网站的爬取数据项,包括以下子步骤:
S11:将所有数据源站三大类:新闻、微博、论坛;针对每一类网站收集包括网站的网页地址、网页标题、关键字在内的信息建立类相关的关键字库;
舆情信息的数据来源主要包括新闻类门户网站,社交网站,论坛博客等信息的主流共享网站。虽然网站之间在页面格式与布局上存在很大差异,但同类型的网站其数据项设置具有一定的相似性。因此在进行数据采集前,首先将所有数据网站分为新闻,微博,论坛三大类。其中新闻类包括新闻类门户网站,报刊杂志类门户网站,博客,微信等。微博包括新浪、腾讯等主流社交网站。论坛包括贴吧,BBS,热门论坛等。同时收集源网站源站地址、源站标题、源站网页关键字等信息建立网站类库。
不同的网站类型其网页数据项不同,为了在后续的数据采集中能够尽量的获取格式统一的结果数据,在采集数据之前系统对三类源站的目标数据进行定义,首先定义相同的数据字段,如文章正文,标题时间等,对于网站之间不同的数据项,我们设置了保留字段来存储特殊字段。
S12:根据每类网站的页面数据特点,事先定义好要爬取的数据字段;
对于要爬取数据的网站,首先访问网站页面获取源站地址、源站标题、源站网页关键字等信息,综合以上信息将源站分到新闻,微博,论坛其中一类。并调用该类对应的要爬取的数据字段。
S13:当有新的目标网站需要采集时,获取包括目标网站地址、页面标题、页面关键字在内的与关键字库对应的信息,根据获得的信息与已有的类库数据对目标网站进行分类;同时筛选出网站的文章列表地址,过滤包括广告在内的与舆情数据无关的页面,将筛选出的地址加入数据采集网站列表。
针对分类后的源站,分析页面布局结构,特别是源站的栏目设置,定位每个栏目的数据列表页。根据目标数据筛选栏目,并将栏目地址加到任务队列中。若需指定采集包含某个关键字的数据,则通过源站的搜索功能搜索包含关键字的数据列表。
S2:将数据采集网站列表传输给数据采集服务器,数据采集服务器分配相应的爬虫以休眠的模式循环地爬取目标网站数据,采集过程中使用生产者消费者模式并发执行采集任务;
所述的步骤S2包括以下子步骤:
S21:将分类后的舆情数据源网站以列表的方式传给数据采集服务器,数据采集服务器将采集任务分配到多台数据采集PC;针对每个源站,系统设置专门的爬虫进行数据爬取;
S22:在数据爬取的过程中对源网站进行实时监控,由于网站数据的不断更新,为了采集到实时数据,系统在整个数据爬取过程中采用休眠机制循环访问网站页面,休眠时间根据网站的数据更新速度动态设置;当更新量达到采集阈值时,爬虫激活进行新一轮的数据采集;同时,在每一轮数据采集完成之后,系统标识最后的采集位置,日志文件记录本次循环共采集的数据条数,系统进入休眠状态。
在数据爬取过程中,系统首先采用工厂设计模式将模拟访问不同的浏览器方法封装起来,并提供统一的实例化接口;在具体实例化的过程中,指定浏览器类型名称即可生产出对应的浏览器访问类;爬虫将根据数据源站的类型与复杂度生成对应的浏览器访问实例;其中浏览器访问类包括PhantomJS和Urllib2两种,PhantomJS可在无界面的情况下支持各种浏览器操作,但因其强大,完备的浏览器操作功能导致在访问的页面过程中耗时较长。而Urllib2功能虽然较弱,但其页面数据获取速度快。因此针对不同的目标网站系统应选择不同的浏览器访问模式。针对新闻,论坛,博客等限制要求较低的网站,为了提高数据采集效率,系统使用Urllib2方式获取页面数据。而像微博这类反扒机制高,用户访问限制较强的网站系统则采用PhantomJS完美的模拟浏览器访问页面,获取数据。针对某些反扒机制较好的网页,系统还需要模拟浏览器登录网站获取到页面cookie文件才可进一步访问页面数据。
同时,代理设置模块在浏览器访问过程中自动为程序分配IP地址。在访问web页面数据之前,需要对数据采集服务器的地址进行代理设置,自动的为服务器分配IP地址。
页面数据分为静态数据和动态数据;对于静态页面数据,爬虫调用模拟浏览器访问方法页面地址获取网页源数据;对于动态数据,爬虫在访问页面之前,需要通过抓包的方式找到动态数据返回链接,再调用浏览器访问方法获取页面数据。
将URL地址存储队列方法封装起来,并提供统一的实例化接口;采用多级生产者消费者模式并发的爬取数据:一级生产者根据分配的数据源网站地址访问页面获取数据的一级URL地址,并将地址存储到数据队列当中;若当前地址页面不是正文地址,而是正文列表地址,系统将分配二级生成者从当前地址队列中获取URL地址进行数据爬取,直到获取到正文URL地址;消费者负责从正文地址队列中取出URL数据,访问页面获取正文页面内容。
具体的,根据不同的源站编写不同的爬虫,数据采集服务器通过分布式高并发的方式采集网站数据。同时要保证数据的多源(各类新闻网站,高校贴吧,热门论坛,博客,微博,微信公众平台等主流信息共享网站)、多模态(文本、图片等)近实时分布式数据抓取。根据源站类型爬取不同的数据项,需设计文章爬取、评论爬取、用户信息爬取子模块。在数据采集过程采用生产者消费者模式并行爬取。生产者负责从源网站爬取数据一级URL存储到数据队列中,消费者则从队列取出URL访问页面获取页面源数据。此外,SSDB数据库能同时满足高性能和大数据的需求,作为生产者和消费者的中间数据队列,提供稳定,高效的数据传输,完成了数据的高并发采集。此外对数据的爬取采取了休眠机制,让数据爬取模块循环工作,但在每个工作周期之间设置合理的休眠时间,在保证数据实时性的同时又让资源得到充分利用。在每个数据采集周期结束后,标识爬取位置,下一次的数据采集从当前位置开始,系统进入休眠状态。采集过程中,系统实时监测网站的更新情况,当网站更新量达到设置的阈值时系统激活进行下一轮的数据采集。
在此过程中,生产者和消费者彼此之间不直接通讯,而是通过阻塞队列来进行通讯。
阻塞队列就相当于一个缓冲区,平衡了生产者和消费者的处理能力,提高了数据的采集效率。队列设置模块提供队列的存取操作,并初始化队列数据库并建立连接。
在进行数据爬取前,进行阻塞队列初始化设置,提前与队列数据库建立连接。此外,系统也将结果数据的存储方法封装为队列方法,并提前与结果数据库建立连接,提高程序的可读性,并且统一的封装之后,便于代码的管理。队列不仅管理需要采集的数据源URL,同时也要对URL进行去重处理,避免重复采集操作浪费服务器资源。
S3:对爬取到的源网页数据进行标签解析,定位目标数据项位置获取目标数据项;
所述的步骤S3包括对动态网页数据的分析和对静态页面数据的分析,其中对于静态页面数据使用封装好的Xpath方法,给定数据项的路径地址即可获取到对应数据项;同时结合正则表达式,通过正则表达式过滤筛选数据,补充获取XPath无法解析到的数据;系统将解析到的数据赋值给事前定义好的对应的数据项;对于动态网页数据,使用JSON方法获取字典格式的动态网页数据项。
数据爬取模块获取到的数据为XML格式的源码页面数据,目标数据包含在众多复杂的页面标签中。因此要对页面进行解析,找到目标数据所在的标签位置,然后定位该标签取出需要的数据项。同时源码的页面数据不仅包含文字,标签等数据,也包含许多特殊字符。为了避免给后续的数据处理造成麻烦,在此步需对爬取到的原始数据进行数据清洗,如去除特殊字符,空格等操作。由于不同的网站其页面结构不同,因此页面解析必须针对每个特点的网站编写。并且每个网站的页面结构并不是长期固定,因此在页面解析过程中必须考虑代码的鲁棒性,也就是能够在页面结构轻微的改变的情况下系统任然能够取到目标数据。因此在标签定位的时候多使用标签的属性名,而不是标签。
S4:将获取到的结果数据项封装成对应类的统一格式;
所述的步骤S4步骤包括:在数据采集之前,采用工厂设计模式,将三类网站定义好的数据项以及保留字段封装成字典格式,并提供统一的数据接口;在数据采集完成后,根据数据源网站类别,系统调用对应的封装方法将采集到的数据封装为对应类的统一格式;在封装过程中使用UUID方法为每条数据生成唯一的标识符,方便后续的检索操作。
数据采集的源网站是多样性,而系统为方便存储综合的把源站分为了三类。每类源网站之间页面数据也存在着一定的差异性,因此需要爬取的数据项之间也会有一定的差异性。为了消除差异性,标准化的输出结果数据,系统进行根据事先定义好的数据项,对爬取到的结果数据进行统一封装。并且为了方便后续的查询处理,我们要为每条增加唯一的标识符。
S5:将封装后的数据存入对应的数据库;
所述的步骤S5包括:采用工厂设计模式将结果数据的存储操作封装为队列方法,采集到数据之后调用队列方法将数据输入数据库服务器;在数据库服务器中分别为每一类源数据网站设置对应的数据库,在数据存储时将数据存到对应的数据库;根据保存数据的不同采取不同的数据库,保存生产者和消费者之间的URL队列数据系统采用SSDB数据库。SSDB作为一个高性能的数据库服务器,对内存的需求小,存取数据速度非常快且能够支持多线程访问。
针对获取到的最终页面数据项,由于数据在类型以及关系上可能复杂多样,因此系统采用Mongodb数据库。Mongodb提供了用于查询,创建,更新和删除的工具存储形式,相较于传统的关系型数据库,它可以使用一个表存储原来需要使用多表关联才能存储的数据库。并且当要增加一个属性值的时候MongoDB面向文档的形式可以使其属性值轻意的增加和删除。而原来的关系型数据库要实现这个需要有很多的属性表来支持。MongoDB提供两种数据写入模式:一种是高效的fire-and-forget模式就是只管向数据库服务器提交数据不等数据库服务器的回应。另外一种是安全模式,就是写入的同时还要与服务器同步,当数据的安全性要求高的时候适合用安全模式。当数据存储在Mongodb数据库之后,我们可以将数据库作为在线舆情大数据库,为其他相关用户提供在线的数据访问接口。
S6:生成监测日志文件。
所述的步骤S6包括:系统采用工厂模式将日志方法封装起来,提供统一的接口访问。日志采用logging模块给运行中的程序提供了一个标准的信息输出接口。系统一开始即调用日志接口生成实例,在整个过程中,记录每个模块的运行状态与结果。在每一轮爬虫程序执行完成时将监测结果按天生成日志文件,方便程序员了解程序运行状态,维护程序。
如图2所示,采用所述的方法的系统,所述的系统包括:
数据准备模块,用于完成源站的分类以及目标数据项定义;
更新监测模块,用于监测目标数据网站的更新情况。
数据爬取模块,用于模拟浏览器环境访问源站目标页面并将页面数据获取到本地;
代理设置模块,用于自动为服务器分配IP地址。
队列设置模块,用于负责管理阻塞URL采集队列,以及结果数据存储队列,并进行去重操作;
数据解析模块,用于通过分析源数据,并从中解析出目标数据项;
数据封装模块,用于将爬取到的数据项统一封装成标准格式输出;
数据存储模块,用于将封装好的数据存储到在线舆情大数据库;
日志生成模块,用于各环节监测状态的日志输出。
Claims (8)
1.一种基于分布式的舆情数据实时采集方法,其特征在于:它包括以下步骤:
S1:建立舆情数据网站类库,分类舆情数据源站,并定义每类网站的爬取数据项;
S2:将数据采集网站列表传输给数据采集服务器,数据采集服务器分配相应的爬虫以休眠的模式循环地爬取目标网站数据,采集过程中使用生产者消费者模式并发执行采集任务;
在数据爬取过程中,系统首先采用工厂设计模式将模拟访问不同的浏览器方法封装起来,并提供统一的实例化接口;在具体实例化的过程中,指定浏览器类型名称即可生产出对应的浏览器访问类;爬虫将根据数据源站的类型与复杂度生成对应的浏览器访问实例;
其中浏览器访问类包括PhantomJS和Urllib2两种,针对新闻,论坛,博客限制要求较低的网站,为了提高数据采集效率,系统使用Urllib2方式获取页面数据;而像微博这类反扒机制高,用户访问限制较强的网站系统则采用PhantomJS完美的模拟浏览器访问页面,获取数据;针对某些反扒机制较好的网页,系统还需要模拟浏览器登录网站获取到页面cookie文件才可进一步访问页面数据;同时,代理设置模块在浏览器访问过程中自动为程序分配IP地址;
将URL地址存储队列方法封装起来,并提供统一的实例化接口;采用多级生产者消费者模式并发的爬取数据:一级生产者根据分配的数据源网站地址访问页面获取数据的一级URL地址,并将地址存储到数据队列当中;若当前地址页面不是正文地址,而是正文列表地址,系统将分配二级生成者从当前地址队列中获取URL地址进行数据爬取,直到获取到正文URL地址;消费者负责从正文地址队列中取出URL数据,访问页面获取正文页面内容;
在此过程中,生产者和消费者彼此之间通过阻塞队列来进行通讯;
采用队列设置模块提供队列的存取操作,并初始化队列数据库并建立连接;
S3:对爬取到的源网页数据进行标签解析,定位目标数据项位置获取目标数据项;
S4:将获取到的结果数据项封装成对应类的统一格式;
S5:将封装后的数据存入对应的数据库;
S6:生成监测日志文件。
2.根据权利要求1所述的一种基于分布式的舆情数据实时采集方法,其特征在于:所述的步骤S1包括以下子步骤:
S11:将所有数据源站分为多类,针对每一类网站收集包括网站的网页地址、网页标题、关键字在内的信息建立类相关的关键字库;
S12:根据每类网站的页面数据特点,事先定义好要爬取的数据字段;
S13:当有新的目标网站需要采集时,获取包括目标网站地址、页面标题、页面关键字在内的与关键字库对应的信息,根据获得的信息与已有的类库数据对目标网站进行分类;同时筛选出网站的文章列表地址,过滤包括广告在内的与舆情数据无关的页面,将筛选出的地址加入数据采集网站列表。
3.根据权利要求1所述的一种基于分布式的舆情数据实时采集方法,其特征在于:所述的步骤S2包括以下子步骤:
S21:将分类后的舆情数据源网站以列表的方式传给数据采集服务器,数据采集服务器将采集任务分配到多台数据采集PC;针对每个源站,系统设置专门的爬虫进行数据爬取;
S22:在数据爬取的过程中对源网站进行实时监控,系统在整个数据爬取过程中采用休眠机制循环访问网站页面,休眠时间根据网站的数据更新速度动态设置;当更新量达到采集阈值时,爬虫激活进行新一轮的数据采集;同时,在每一轮数据采集完成之后,系统标识最后的采集位置,日志文件记录本次循环共采集的数据条数,系统进入休眠状态。
4.根据权利要求1所述的一种基于分布式的舆情数据实时采集方法,其特征在于:所述的步骤S3包括对动态网页数据的分析和对静态页面数据的分析,其中对于静态页面数据使用封装好的Xpath方法,给定数据项的路径地址即可获取到对应数据项;同时结合正则表达式,通过正则表达式过滤筛选数据,补充获取XPath无法解析到的数据;系统将解析到的数据赋值给事前定义好的对应的数据项;对于动态网页数据,使用JSON方法获取字典格式的动态网页数据项。
5.根据权利要求1所述的一种基于分布式的舆情数据实时采集方法,其特征在于:所述的步骤S4步骤包括:在数据采集之前,采用工厂设计模式,将每一类网站定义好的数据项以及保留字段封装成字典格式,并提供统一的数据接口;在数据采集完成后,根据数据源网站类别,系统调用对应的封装方法将采集到的数据封装为对应类的统一格式;在封装过程中使用UUID方法为每条数据生成唯一的标识符,方便后续的检索操作。
6.根据权利要求1所述的一种基于分布式的舆情数据实时采集方法,其特征在于:所述的步骤S5包括:采用工厂设计模式将结果数据的存储操作封装为队列方法,采集到数据之后调用队列方法将数据输入数据库服务器;在数据库服务器中分别为每一类源数据网站设置对应的数据库,在数据存储时将数据存到对应的数据库;根据保存数据的不同采取不同的数据库,保存生产者和消费者之间的URL队列数据。
7.根据权利要求1所述的一种基于分布式的舆情数据实时采集方法,其特征在于:所述的步骤S6包括:采用工厂模式将日志方法封装起来,提供统一的接口访问;日志采用logging模块给运行中的程序提供了一个标准的信息输出接口;系统开始运行的时候即调用日志接口生成实例,在整个过程中记录每个模块的运行状态与结果;在每一轮爬虫程序执行完成时,将监测结果按天生成日志文件。
8.采用权利要求1~7任意一项所述的方法的系统,其特征在于:所述的系统包括:
数据准备模块,用于完成源站的分类以及目标数据项定义;
更新监测模块,用于监测目标数据网站的更新情况;
数据爬取模块,用于模拟浏览器环境访问源站目标页面并将页面数据获取到本地;
所述数据爬取模块在数据爬取过程中,系统首先采用工厂设计模式将模拟访问不同的浏览器方法封装起来,并提供统一的实例化接口;在具体实例化的过程中,指定浏览器类型名称即可生产出对应的浏览器访问类;爬虫将根据数据源站的类型与复杂度生成对应的浏览器访问实例;
其中浏览器访问类包括PhantomJS和Urllib2两种,针对新闻,论坛,博客限制要求较低的网站,为了提高数据采集效率,系统使用Urllib2方式获取页面数据;而像微博这类反扒机制高,用户访问限制较强的网站系统则采用PhantomJS完美的模拟浏览器访问页面,获取数据;针对某些反扒机制较好的网页,系统还需要模拟浏览器登录网站获取到页面cookie文件才可进一步访问页面数据;
代理设置模块,用于自动为服务器分配IP地址;
所述代理设置模块在浏览器访问过程中自动为程序分配IP地址;
队列设置模块,用于负责管理阻塞URL采集队列,以及结果数据存储队列,并进行去重操作;
所述队列设置模块将URL地址存储队列方法封装起来,并提供统一的实例化接口;采用多级生产者消费者模式并发的爬取数据:一级生产者根据分配的数据源网站地址访问页面获取数据的一级URL地址,并将地址存储到数据队列当中;若当前地址页面不是正文地址,而是正文列表地址,系统将分配二级生成者从当前地址队列中获取URL地址进行数据爬取,直到获取到正文URL地址;消费者负责从正文地址队列中取出URL数据,访问页面获取正文页面内容;
在此过程中,生产者和消费者彼此之间通过阻塞队列来进行通讯;
采用队列设置模块提供队列的存取操作,并初始化队列数据库并建立连接;
数据解析模块,用于通过分析源数据,并从中解析出目标数据项;
数据封装模块,用于将爬取到的数据项统一封装成标准格式输出;
数据存储模块,用于将封装好的数据存储到在线舆情大数据库;
日志生成模块,用于各环节监测状态的日志输出。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610502047.7A CN106096056B (zh) | 2016-06-30 | 2016-06-30 | 一种基于分布式的舆情数据实时采集方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610502047.7A CN106096056B (zh) | 2016-06-30 | 2016-06-30 | 一种基于分布式的舆情数据实时采集方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106096056A CN106096056A (zh) | 2016-11-09 |
CN106096056B true CN106096056B (zh) | 2019-11-26 |
Family
ID=57214032
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610502047.7A Expired - Fee Related CN106096056B (zh) | 2016-06-30 | 2016-06-30 | 一种基于分布式的舆情数据实时采集方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106096056B (zh) |
Families Citing this family (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108073521B (zh) * | 2016-11-11 | 2021-10-08 | 深圳市创梦天地科技有限公司 | 一种数据去重的方法和系统 |
CN106649576A (zh) * | 2016-11-15 | 2017-05-10 | 北京集奥聚合科技有限公司 | 一种爬虫爬取的电商商品的存储方法及系统 |
CN106528841B (zh) * | 2016-11-24 | 2017-11-03 | 简极科技有限公司 | 智能足球赛事成绩记录分析系统及方法 |
CN106844486A (zh) * | 2016-12-23 | 2017-06-13 | 北京奇虎科技有限公司 | 爬取动态网页的方法及装置 |
CN106874424B (zh) * | 2017-01-25 | 2019-10-15 | 杭州淘淘搜科技有限公司 | 一种基于MongoDB和Redis的网页数据采集处理方法及系统 |
CN107220297B (zh) * | 2017-05-02 | 2020-11-20 | 北京大学 | 面向软件项目的多源异构数据自动收集方法及系统 |
CN107577748A (zh) * | 2017-08-30 | 2018-01-12 | 成都中建科联网络科技有限公司 | 基于大数据的建筑行业信息采集系统及其方法 |
CN110020068B (zh) * | 2017-09-26 | 2021-10-15 | 北京国双科技有限公司 | 一种页面爬取规则的配置方法及装置 |
WO2019090650A1 (zh) * | 2017-11-10 | 2019-05-16 | 麦格创科技(深圳)有限公司 | 任务分配在分布式系统的实现方法及系统 |
CN107871009A (zh) * | 2017-11-17 | 2018-04-03 | 山东浪潮云服务信息科技有限公司 | 一种采集目录元数据的方法及装置 |
CN108009219A (zh) * | 2017-11-21 | 2018-05-08 | 国家计算机网络与信息安全管理中心 | 一种发现互联网金融舆情监管目标的方法 |
CN107943588A (zh) * | 2017-11-22 | 2018-04-20 | 用友金融信息技术股份有限公司 | 数据处理方法、系统、计算机设备和可读存储介质 |
CN107943991A (zh) * | 2017-12-01 | 2018-04-20 | 成都嗨翻屋文化传播有限公司 | 一种基于内存数据库的分布式爬虫框架及实现方法 |
CN108647249B (zh) * | 2018-04-18 | 2022-08-02 | 平安科技(深圳)有限公司 | 舆情数据预测方法、装置、终端及存储介质 |
CN108829759A (zh) * | 2018-05-28 | 2018-11-16 | 沈文策 | 一种数据采集方法、装置、电子设备及存储介质 |
CN110633429B (zh) * | 2018-05-31 | 2024-09-20 | 北京京东尚科信息技术有限公司 | 内容爬取方法与装置以及分布式爬虫系统 |
CN108897804A (zh) * | 2018-06-15 | 2018-11-27 | 东北大学秦皇岛分校 | 一种互联网空间数据的搜索系统及方法 |
CN109446394A (zh) * | 2018-09-27 | 2019-03-08 | 武汉大学 | 针对网络舆情事件的基于模块化的舆情监测方法及系统 |
CN109614506A (zh) * | 2018-11-05 | 2019-04-12 | 厦门市美亚柏科信息股份有限公司 | 一种基于rocksdb排重数据导入图库的方法、装置及存储介质 |
CN109614550A (zh) * | 2018-12-11 | 2019-04-12 | 平安科技(深圳)有限公司 | 舆情监控方法、装置、计算机设备及存储介质 |
CN109885744B (zh) * | 2019-01-07 | 2024-05-10 | 平安科技(深圳)有限公司 | 网页数据爬取方法、装置、系统、计算机设备及存储介质 |
CN110297960A (zh) * | 2019-06-17 | 2019-10-01 | 中电科大数据研究院有限公司 | 一种基于配置的分布式公文数据采集系统 |
CN110442772A (zh) * | 2019-08-13 | 2019-11-12 | 深圳司南数据服务有限公司 | 一种智能研报生成方法及终端 |
CN110737647B (zh) * | 2019-08-20 | 2023-07-25 | 广州宏数科技有限公司 | 一种互联网大数据清洗方法 |
CN111708335A (zh) * | 2020-06-03 | 2020-09-25 | 深圳前海禾盈科技有限公司 | 一种基于智慧工厂的设备数据采集的方法 |
CN111953766A (zh) * | 2020-08-07 | 2020-11-17 | 福建省天奕网络科技有限公司 | 一种网络数据采集的方法及其系统 |
CN112261429A (zh) * | 2020-10-21 | 2021-01-22 | 北华大学 | 无卡顿智能终端直播应用系统、方法、设备及存储介质 |
CN112818292A (zh) * | 2021-01-20 | 2021-05-18 | 天津市陆海测绘有限公司 | 一种预报潮汐数据快速获取与拟合方法 |
CN113094382B (zh) * | 2021-04-02 | 2022-12-06 | 南开大学 | 一种面向多来源数据管理的半自动化数据采集更新方法 |
CN113987320B (zh) * | 2021-11-24 | 2024-06-04 | 宁波深擎信息科技有限公司 | 基于智能页面解析的实时资讯爬虫方法、装置及设备 |
CN114490778A (zh) * | 2022-02-15 | 2022-05-13 | 北京固加数字科技有限公司 | 一种金融研报自动生成系统及方法 |
CN116009465B (zh) * | 2022-09-08 | 2024-01-30 | 上海繁易信息科技股份有限公司 | 分布式数据采集方法及相关装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104951512A (zh) * | 2015-05-27 | 2015-09-30 | 中国科学院信息工程研究所 | 一种基于互联网的舆情数据采集方法及系统 |
CN105677918A (zh) * | 2016-03-03 | 2016-06-15 | 浪潮软件股份有限公司 | 一种基于Kafka和Quartz的分布式爬虫架构及其实现方法 |
CN105718590A (zh) * | 2016-01-27 | 2016-06-29 | 福州大学 | 面向多租户的SaaS舆情监控系统及方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8972376B1 (en) * | 2013-01-02 | 2015-03-03 | Palo Alto Networks, Inc. | Optimized web domains classification based on progressive crawling with clustering |
-
2016
- 2016-06-30 CN CN201610502047.7A patent/CN106096056B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104951512A (zh) * | 2015-05-27 | 2015-09-30 | 中国科学院信息工程研究所 | 一种基于互联网的舆情数据采集方法及系统 |
CN105718590A (zh) * | 2016-01-27 | 2016-06-29 | 福州大学 | 面向多租户的SaaS舆情监控系统及方法 |
CN105677918A (zh) * | 2016-03-03 | 2016-06-15 | 浪潮软件股份有限公司 | 一种基于Kafka和Quartz的分布式爬虫架构及其实现方法 |
Non-Patent Citations (1)
Title |
---|
Webdriver Ui自动化测试,使用工厂方法生产不同浏览器的webdriver实例;wangxin0314;《CSDN博客》;20151216;第1-3程序代码 * |
Also Published As
Publication number | Publication date |
---|---|
CN106096056A (zh) | 2016-11-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106096056B (zh) | 一种基于分布式的舆情数据实时采集方法和系统 | |
CN111435344B (zh) | 一种基于大数据的钻井提速影响因素分析模型 | |
CN107103064B (zh) | 数据统计方法及装置 | |
CN111666490A (zh) | 基于kafka的信息推送方法、装置、设备及存储介质 | |
CN102483756A (zh) | 使用社区交流的语义分析的助理顾问 | |
CN106776693A (zh) | 一种网站数据采集方法及装置 | |
CN110222251A (zh) | 一种基于网页分割和搜索算法的服务包装方法 | |
CN112287114A (zh) | 一种知识图谱服务处理方法和装置 | |
Pelekh et al. | Design of a system for dynamic integration of weakly structured data based on mash-up technology | |
Nadee et al. | Towards data extraction of dynamic content from JavaScript Web applications | |
Xia et al. | Optimizing an index with spatiotemporal patterns to support GEOSS Clearinghouse | |
Tsai et al. | [Retracted] Analysis of Application Data Mining to Capture Consumer Review Data on Booking Websites | |
CN103399746B (zh) | 一种便于二次开发的信息管理系统及开发方法 | |
CN101930473A (zh) | 一种具有可执行结构的云计算视窗搜索体系的架构方法 | |
CN115168474A (zh) | 一种基于大数据模型的物联中台系统搭建方法 | |
Fan et al. | Semantic client‐side approach for web personalization of SaaS‐based cloud services | |
Li et al. | Research and application of knowledge resources network for product innovation | |
Kherwa et al. | Data preprocessing: A milestone of web usage mining | |
CN108470047B (zh) | 基于物联网的远程平台监测系统 | |
Nisha | Semantic based query optimization using ontology for knowledge management | |
Wong et al. | A framework for a World Wide Web-based Data Mining system | |
Woelk et al. | Infosleuth: Networked exploitation of information using semantic agents | |
CN110866165A (zh) | 一种网络视频采集方法及系统 | |
Kumar et al. | Web data mining using xML and agent framework | |
CN210605805U (zh) | 一种工商行政管理服务平台系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20191126 |
|
CF01 | Termination of patent right due to non-payment of annual fee |